发送子ViewModel而不是foreach绑定表达式中的childs $数据?

时间:2013-03-06 17:38:56

标签: knockout.js

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

我可以这样做:

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

但它没有用,因为在openDialogueEdit中我将$ data绑定到Edit Dialogue使用的observable,而$ data有可评估的observable,而不是observable本身,我需要绑定数据foreach渲染到编辑对话。

2 个答案:

答案 0 :(得分:2)

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

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

这就是你所需要的一切。您可以在this fiddle中查看此操作。

答案 1 :(得分:1)

要解决原型范围问题,可以向构造函数

添加绑定
var ViewModel = function() {
    this.removeSeat = this.removeSeat.bind(this);
};

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

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