2012-04-12 83 views
2

我一直在使用knockout一段时间,但写了一些代码示例,这一个让我难住。代码工作完全按照我期待,当点击按钮切换可见的,但我仍然得到一个错误:knockoutjs“无法解析绑定”错误,但代码工作

的jsfiddle:从

<ul data-bind="foreach: answers"> 
    <li> 
     <a class="hiddenButton" href="#" data-bind="click: answerClick" /> 
     <div class="answerNumber" data-bind="visible: showAnswerNumber"> 
      <h2 data-bind="text: answerNumber" /> 
     </div> 
     <div class="answer" data-bind="visible: showAnswerText"> 
      <p data-bind="text:text" /> 
      <p data-bind="text: points" /> 
     </div> 
    </li> 
</ul> 

<script type="text/javascript"> 

    var answerViewModel = function() { 
     var self = this; 

     //clicks 
     self.answerClick = function() { 
      self.showAnswerNumber(!self.showAnswerNumber()); 
     }; 

     //observables 
     self.answerNumber = ko.observable(); 
     self.text = ko.observable(); 
     self.points = ko.observable(); 
     self.showAnswerNumber = ko.observable(true); 

     //computed 
     self.showAnswerText = ko.computed(function() { 
      return !self.showAnswerNumber(); 
     }); 
    }; 

    var roundViewModel = function() { 
     var self = this; 
     self.answers = ko.observableArray(); 
    }; 

    var answer1 = new answerViewModel(); 
    answer1.text = "foo answer"; 
    answer1.answerNumber = 1; 
    answer1.points = 50; 

    var vm = new roundViewModel(); 
    vm.answers.push(answer1); 

    ko.applyBindings(vm); 

</script> 

回答

3

http://jsfiddle.net/JasonMore/hCdF8/1/

Uncaught Error: Unable to parse bindings. 
Message: ReferenceError: answerClick is not defined; 
Bindings value: click: answerClick 

因为你正在关闭你的锚标记:<a />,它以一种奇怪的方式呈现,其中额外的锚标记在foreach之外,而不是在answerClick是有效函数的上下文中。

我不知道,你要使用你的链接是什么内容,但你需要有一个像打开和关闭标签:

<a class="hiddenButton" href="#" data-bind="click: answerClick">link</a>

不知道,如果你打算来包装内容那个链接,但那是你的问题所在。

样品:http://jsfiddle.net/rniemeyer/hCdF8/2/

相关问题