【发布时间】:2012-02-14 01:48:36
【问题描述】:
尝试在 Knockout 2 中使用新的 cleaner event handling 以及新的控制流绑定,我正在努力实现一个简单的动态列表,添加和删除字符串。所以我的标记大致是这样的:
<div data-bind="foreach:myList">
<input data-bind="value: $data" />
<button data-bind="click:$parent.removeFromList">X</button>
</div>
我的视图模型有一个匹配的删除函数,它模仿a sample from Steve Sanderson。
removeFromList: function(item) {
this.myList.remove(item);
}
现在我希望 'this' 指代视图模型,而 item 指代被删除的数组成员(因为 event handlers now receive the current model value as their first parameter)。但是,“this”似乎也指的是要删除的字符串。因此,当我单击删除时,我得到:
this.myList is undefined
我在http://jsfiddle.net/davidc/rFd7H/ 创建了一个JSFiddle,它说明了我的问题。我应该如何从列表中删除项目?
【问题讨论】:
-
文档说该函数获取当前模型值作为其参数,但它没有说明
this绑定的内容。显然,它绑定到相同的东西(嗯,绑定到从数组中的字符串原语实例化的 String 对象)。我同意那很蹩脚。但是,我不确定 Knockout 如何知道将this绑定到$parent... -
好的,文档没有说 'this' 绑定到 $parent 但来自 Steve Sanderson 的 blog post 在相同的场景中使用它。
-
该示例使用 2.0 之前的内联事件处理程序代码,而不是新的东西。