如何将子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渲染到编辑对话。
答案 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
。它有点尴尬,但我认为这是最简单的解决方案。