使用KnockoutJS从observableArray中删除项目。
我不知道 - 没有任何反应。
我的标记:
<button data-bind="click: Summary.remove">
<i class="icon-ok"></i>
</button>
我的删除操作:
self.remove = function (item) {
self.products.remove(item);
};
My observableArray:
self.products = ko.observableArray();
无。 self.remove
函数正在触发,但项目没有任何反应。
我认为我已经通过的细节已经足够,但如果你需要更多,请告诉我。
答案 0 :(得分:3)
假设您从foreach绑定中调用,我相信您应该使用$ parent上下文来调用remove函数:
<button data-bind="click: $parent.remove">
<i class="icon-ok"></i>
</button>
下面是一个示例小提琴,说明我通常如何在列表中添加/删除项目:
<强> HTML 强>
<ul data-bind="foreach: products">
<li>
<span data-bind="text: name"></span>
<button data-bind="click: $parent.remove">Remove</button>
</li>
</ul>
<button data-bind="click: add">Add New </button>
<强> javscript 强>
var product = function (data) {
var self = this;
self.name = ko.observable(data);
}
var vm = function () {
var self = this;
self.remove = function (item) {
self.products.remove(item);
};
self.add = function () {
self.products.push(new product("new product"));
}
self.products = ko.observableArray();
}
var viewModel = new vm();
viewModel.products([ new product("product a"), new product("product b")]);
ko.applyBindings(viewModel);