Javascript knockout.js引用父对象

Javascript knockout.js引用父对象,javascript,knockout.js,Javascript,Knockout.js,我有一个复杂的knockout.js对象,它实际上是一个ObserverArray,里面有另一个ObserverArray。我有一个remove函数,它异步地从第二个数组中删除所选元素。一个项目正在数据库中存档,而它在客户端的一个可观察属性被设置为false,使其从屏幕上消失 使用$root关键字创建移除按钮事件: <a href="#" data-bind="click: $root.RemoveActivity">Remove</a> 什么使我能够使用“this

我有一个复杂的knockout.js对象,它实际上是一个ObserverArray,里面有另一个ObserverArray。我有一个remove函数,它异步地从第二个数组中删除所选元素。一个项目正在数据库中存档,而它在客户端的一个可观察属性被设置为false,使其从屏幕上消失

使用$root关键字创建移除按钮事件:

<a href="#" data-bind="click: $root.RemoveActivity">Remove</a>


什么使我能够使用“this”关键字访问所选元素的详细信息。我的问题是,在从第二个数组中删除项时,我想将某些内容更改为第一个数组中的父项。正如我提到的,“this”关键字指的是子项,是否有任何方法可以同时访问父项?

mhu的答案是反模式的,因为它在视图模型和视图结构之间创建了依赖关系

取而代之的是

<a href="#" data-bind="click: $parent.removeActivity.bind($parent)">Remove</a>

您可以尝试将
$parent
作为参数传递:
data bind=“click:function(data,event){return$root.RemoveActivity(data,event,$parent);}”
然后您将在第三个参数中获得父级。您是对的,这会更好。我不知道你可以这样使用bind()。谢谢,希望你没有被反模式语句冒犯,但是在一个更大更复杂的站点中,你可能会因为与视图的硬耦合而遇到麻烦,也更难测试等等。你还可以指定反模式是什么吗?我正在考虑让子模型的构造函数通过一个可选参数链接到其父模型,这样模型就可以包含一个删除自身的操作。这就是你所说的反模式,还是mhu说了别的什么?
removeActivity: function(activity) {
    this.activities.remove(activity);
}