在以下代码中,为什么remove
处理程序可以在没有$parent
的情况下访问?
如果我使用data-bind="click: $parent.remove"
我收到错误消息property remove of undefined doesn't exists
,但是在foreach循环中,我不应该得到$parent
上下文吗?
模板:
<ul data-bind="foreach:list">
<li><!-- ko text: $data --><!-- /ko --> <button data-bind="click: remove">x</button></li>
</ul>
视图模型:
function ViewModel() {
var self = this;
this.list = ko.observableArray(['asd', 'lol', 'rofl']);
this.remove = function(index){
console.log('Clicked ' + index);
self.list.splice(index, 1);
};
};
ko.applyBindings(ViewModel);
答案 0 :(得分:3)
创建视图模型时,您缺少new
。
您的代码应如下所示:
ko.applyBindings(new ViewModel());
如果没有new
this
引用全局window
对象,那么您的remove
函数将全局声明,这就是$parent
无效的原因
演示JsFiddle。