2014-09-04 64 views
0

在我的代码中,我点击添加按钮时会显示一个输入栏和一个应用按钮。点击应用按钮我写了一个函数,通过它显示我的文本和显示字段按钮。但我得到一个错误“节目是没有定义” 这里是我的功能可见绑定在淘汰赛js中不起作用

self.apply = function() { 
    self.show(false); 
    self.showFields(true); 
}; 

addterm这里

self.addTerm = function() { 
    var term = new Term("12"); 
    self.Terms.push(term); 
    self.show(true); 
    self.showFields(false); 
}; 

这里是JS小提琴Link

回答

1

当你使用迭代您Terms

<tbody data-bind="foreach: Terms"> 

Th e范围内的tbody成为您正在迭代的当前Term。所以,当你写:

<input type="text" class="edit" data-bind="value: loanterm, visible: show" /> 

淘汰赛正在寻找Term.show这显然不存在。所以,你需要指向淘汰赛使用$root关键字根视图模型:

<input type="text" class="edit" data-bind="value: loanterm, visible: $root.show" /> 

(也是一样的showFields属性)

Binding-Context

1

您需要添加父关键字。

<button class="button addNewButton" data-bind="click: $root.addTerm">Add a new Term for Loan</button> 
<table class="termGrid"> 
<thead> 
    <tr> 
     <th class="headRow headColumn"> 
      Term 
     </th> 
     <th class="headRow tools"> 
     </th> 
    </tr> 
</thead> 
<tbody data-bind="foreach: Terms"> 
    <tr class="row"> 
     <td class="tools"> 

      <input type="text" class="edit" data-bind="value: loanterm, visible: $parent.show" /> 
      <strong class="read" data-bind="text: loanterm, visible: $parent.showFields" ></strong> 
      <a class="button toolButton" href="#" data-bind="visible: $parent.showFields" >show Tiers</a> 
      <a class="button toolButton" href="#" data-bind="click: $root.apply,visible:$parent.show" >Apply</a> 

     </td> 
    </tr> 
</tbody> 

fiddle demo

+0

感谢Raheel。 :) – user2142786 2014-09-04 07:34:12