Short Example:
<div data-bind="foreach: firstArray">
<span data-bind="text: title"></span>
<input type="checkbox" data-bind="click: $parent.delete"/>
</div>
<div data-bind="foreach: secArray">
<span data-bind="text: title"></span>
<input type="checkbox" data-bind="click: $parent.delete"/>
</div>
[...]
self.firstArray = ko.observableArray([]);
self.delete = function (item, event) {
self.firstArray.remove(item);
}
[...]
问题:我有2个Arrays,它们都使用相同的功能,我想知道项目的来源(来自first或secArray)。
答案 0 :(得分:2)
您只需将数组传递给删除功能即可。 像:
<div data-bind="foreach: firstArray">
<span data-bind="text: title"></span>
<input type="checkbox" data-bind="click: $parent.delete.bind($data, $parent.firstArray)"/>
</div>
您的viewmodel应该知道您已通过该功能,而this
是您当前的项目。
self.firstArray = ko.observableArray([]);
self.delete = function (array) {
array.remove(this);
}
您可以阅读点击装订here的更多信息。它说明了如何传递参数。
答案 1 :(得分:1)
为什么你没有两个功能?
<div data-bind="foreach: firstArray">
<span data-bind="text: title"></span>
<input type="checkbox" data-bind="click: $parent.deleteFromFirst"/>
</div>
<div data-bind="foreach: secArray">
<span data-bind="text: title"></span>
<input type="checkbox" data-bind="click: $parent.deleteFromSecond"/>
</div>
[...]
self.firstArray = ko.observableArray([]);
self.deleteFromFirst = function (item, event) {
self.firstArray.remove(item);
}
self.secArray = ko.observableArray([]);
self.deleteFromSecond = function (item, event) {
self.secArray.remove(item);
}
[...]