我正在尝试将 knockout.js 与 ES5 插件一起使用,但我无法从数组中删除来工作。
它似乎有点工作,你可以删除,但数组中总是剩下一个项目,但不是真的不知何故。我完全困惑为什么这不像你想象的那样工作。
我究竟做错了什么?
(我有一个使用 durandal 小部件的更复杂的场景,但我能够将其归结为这个,所以我认为 es5 插件是罪魁祸首)
这是我的标记:
<div data-bind="foreach: staffList" style="border:1px solid black;">
<div style="border: 1px solid red;">
<p data-bind="text: Name"></p>
<p>
<button data-bind="click: deleteClickHandler">Delete</button>
</p>
</div>
</div>
和脚本:
function ctor(){
var self=this;
self.staffList = [{Name:'one'},{Name:'two'},{Name:'three'},{Name:'four'}];
ko.track(self.staffList, { deep: true });
self.deleteClickHandler = function (obj) {
//TODO show confirm dialog first
var index = self.staffList.indexOf(obj);
if (index >= 0) {
self.staffList.splice(index, 1);
}
};
}
ko.applyBindings(ctor);
现实世界中唯一的其他区别是我从 API 调用中获取数据,但行为是相同的。