我有一种情况,我想通知祖父母或$ parent [1]发生在子视图模型中的点击事件.所以基本上我希望能够做到这一点
self.$parents[1].actionTaken
我认为这不起作用,因为绑定上下文与viewModel,但我想听听是否有人有正确的方法来做这样的事情的想法.谢谢
 self.save = function () {
     //do stuff to self first, then
      self.$parents[1].actionTaken();
};
Uwe*_*weB 20
或者,您可以通过以下方式将参数传递给视图模型的事件处理程序:更改save方法
self.save = function(theParents) {
    theParents[1].actionTaken();
}
并按以下方式绑定您的处理程序:
data-bind="click: function() { $data.save($parents) }"
有关详细信息,请参阅单击处理程序文档中的注释2(需要稍微降低一点)
And*_*ers 18
或者使用这个bind技巧
data-bind="click: $parent.foo.bind($parent)"
现在,当您访问foo函数时,this关键字将指向父上下文.
foo: function(child) {
   this.children.remove(child);
}
mae*_*ets 11
现在(使用knockout 3.0.0)可以向子函数添加两个参数(由click绑定执行),第一个将被分配当前的viewmodel,第二个将被分配click事件args.
然后调用ko.contextFor()并传递事件目标,您将可以通过上下文对象访问$ parent.
this.myChildFunction = function (vm, e) {
  var context = ko.contextFor(e.target);
  context.$parent.myParentFunction();
};
(不知道在其他答案的时候这是否可能......)
| 归档时间: | 
 | 
| 查看次数: | 23650 次 | 
| 最近记录: |