0

如何将子 ViewModel 发送到 foreach 绑定表达式中的 $parent 函数?

我可以做这个:

   <button class="radius button small" data-bind="click:function() { $parent.openDialogueEdit($data)}">Edit</button>

但这没有用,因为在 openDialogueEdit 中,我将 $data 绑定到编辑对话使用的可观察对象,并且 $data 具有评估的可观察对象,而不是可观察对象本身,我需要将 foreach 渲染中的数据绑定到编辑对话。

4

2 回答 2

2

默认情况下,发送到绑定函数的项目是当前上下文,即foreach绑定中的子视图模型。

data-bind="click: $parent.selectedItem"

这就是你所需要的。你可以在这个 fiddle中看看这个。

于 2013-03-06T23:07:17.450 回答
1

要解决原型范围问题,您可以向构造函数添加绑定

var ViewModel = function() {
    this.removeSeat = this.removeSeat.bind(this);
};

ViewModel.prototype.removeSeat = function(seat) {
    this.seats.remove(seat);
};

this这将强制函数在标准click绑定中正确关联。它有点尴尬,但我认为它是最简单的解决方案。

于 2013-03-07T20:45:21.413 回答