【发布时间】:2012-01-30 12:32:57
【问题描述】:
我正试图了解淘汰赛 js 中的 observables! 但是,我在可观察数组上实现删除函数时遇到了问题。
我的js如下:
$(function () {
var data = [{ name: "name1" }, { name: "name2" }, { name: "name3"}];
var viewModel = {
namesList: ko.observableArray(data),
nameToAdd: ko.observable("name4"),
myCustomAddItem: function () {
this.namesList.push({ name: this.nameToAdd() });
},
myCustomRemove: function () {
console.log("before + " + this.nameToAdd());
this.namesList.remove(this.nameToAdd());
console.log("after + " + this.nameToAdd());
}
};
ko.applyBindings(viewModel);
});
我的 html 是:
Name To add/remove <input type="text" data-bind="value: nameToAdd, valueUpdate: 'afterkeydown'"/>
<ul data-bind="template: {name: 'listTemp1', foreach :namesList}">
</ul>
<p>
<button data-bind="click: myCustomAddItem">Add Item</button>
<button data-bind="click: myCustomRemove">Remove Item</button>
<script id="listTemp1" type="text/html">
<li data-bind="text:name"> </li>
</script>
</p>
我的 myCustomAddItem 工作正常,但 myCustomRemove 不行。我还在this.namesList.remove(this.nameToAdd()); 之前和之后放置了一个console.log,以查看那里是否有任何问题,但我看不到那里有任何错误。当我单击“删除项目”按钮时,firebug 控制台会显示日志,但该项目并未从列表中删除。
任何帮助表示赞赏
【问题讨论】: