我在jsFiddle here上有一部分代码。有人能说'removeItem'函数有什么问题吗?
的 HTML 的
<div id="newIdea" data-bind="if: isNew">
<div data-bind="with: idea">
<input type="text" style="width: 200px;"
data-bind='value:wanted().itemToAdd, valueUpdate: "afterkeydown"' />
<input type="button" data-bind="click:wanted().addItem" value="add" />
<ul data-bind="foreach: wanted().allItems">
<li>
<span data-bind="text:$data"></span>
<input type="button"
data-bind="click:$parent.wanted().removeItem" value="remove"/>
</li>
</ul>
</div>
</div>
的的JavaScript 的
var WantedListModel = function () {
var self = this;
self.itemToAdd = ko.observable("");
self.allItems = ko.observableArray();
self.addItem = function () {
var item = self.itemToAdd();
self.allItems.push(item);
self.itemToAdd("");
};
self.removeItem = function () {
self.allItems.remove(this);
};
};
var vm = {
isNew: ko.observable(true),
idea: ko.observable({
wanted: ko.observable(new WantedListModel())
})
};
ko.applyBindings(vm);
我必须使用这样的层次结构
答案 0 :(得分:3)
Ko
将当前元素作为函数的第一个参数传递,因此您应该使用它而不是:
self.removeItem = function (data) {
alert(data);
self.allItems.remove(data);
};
这是工作小提琴:http://jsfiddle.net/9JsUJ/8/
答案 1 :(得分:1)
问题是你那里没有花括号。下次检查你的控制台 -
self.removeItem = function ()
self.allItems.remove(this);
};
小提琴已经包含了修复,你的小提琴正在运作。
self.removeItem = function () {
self.allItems.remove(this);
};