2013-12-08 24 views
0

我有一个父级和根绑定的问题。敲除父级和根绑定

function SignCell() { 
     var self = this; 
     self.MathSign = ko.observable("+"); 
     self.AdditionCell = ko.observable(""); 
    }  
    function Expression(cell) { 
     var self = this; 
     self.BaseCell = ko.observable(cell); 
     self.AddCell = ko.observableArray([]); 
    } 

function Condition(active, expression1, sign, expression2, errMassage) { 
    var self = this; 
    self.Active = ko.observable(active); 
    self.Expression1 = expression1; 
    self.Sign = ko.observable(sign); 
    self.Expression2 = expression2; 
    self.ErrMassage = ko.observable(errMassage); 
} 
var ViewModel = function() { 
    var self = this; 
    self.ConditionArray = ko.observableArray([ 
     new Condition(true,new Expression(""),"=",new Expression(""),"") 
    ]);  
    self.RemoveExpr1 = function() { 
     var i = self.ConditionArray.indexOf(arr); 
     self.ConditionArray()[i].Expression1.AddCell.push(new Expression()); 
    };   
}; 

和HTML

<tbody data-bind="foreach: ConditionArray"> 
    <tr> 
     <td><input class="input-small" data-bind="value: Expression1.BaseCell"/> 
      <table> 
       <tbody data-bind="foreach: Expression1.AddCell"> 
        <tr>       
          <button data-bind="click: $parent.RemoveExpr1" class="btn btn-danger"> <i class="icon-minus-sign icon-white"></i></button> 
         </td> 
        </tr> 
       </tbody> 
      </table> 

我不能把使用点击功能self.RemoveExpr1:$ parent.RemoveExpr1" 你有什么想法如何解决这个问题

+0

如何使用'$ root.RemoveExpr1'? –

+0

是的,它的工作。谢谢。 – user3044918

回答

1

使用$root.RemoveExpr1代替$parent.RemoveExpr1

你在一个嵌套循环中。您需要的功能附加到ViewModel。这里$root是指ViewModel而不是$parent

+0

只是向下投票没有帮助真的。决定投票后,您有义务与其一起撰写评论,以澄清理由。作者可能不明显是什么问题。这就是为什么他/她首先弄错了,对吧? –

+2

+1 - 这是正确的。为什么要投票?您也可以调用'$ parents [x] .RemoveExpr1'。 x = 0是父项,x = 1是祖父等。在这种情况下调用'$ parents [1] .RemoveExpr1'。 – seldary