我一直在尝试将我的数据表与淘汰赛 js 绑定。我有一个用于将元素添加到 observableArray 的按钮,它可以有效地更新表格。对于每一行我都有一个删除按钮,问题是我可以第一次删除一个项目,然后表格更新。之后,没有删除按钮起作用。如果我添加一个项目并单击以删除其他项目,则删除似乎不起作用。奇怪的是,如果我对表格进行排序或搜索(意思是更新它),删除似乎第二次起作用了。
这是我的代码
<script id="sample2RowTemplate" type="text/html">
<td> <label data-bind="text: Id" /></td>
<td> <input type="text" data-bind="value: Title" /></td>
<td> <input type="text" data-bind="value: Price" /></td>
<td><a data-bind="click: function() { vm.removeGift($data); }">Remove</a></td>
</script>
和:
var initialData = [{
Id: 1,
Title: 'Star Wars Blue Ray',
Price: '90.00'}];
var initCounter = 1;
//define record class
function GiftRecord(id, title, price) {
this.Id = ko.observable(id);
this.Title = ko.observable(title);
this.Price = ko.observable(price);
}
//map the records
var mappedData = ko.utils.arrayMap(initialData, function(item) {
return new GiftRecord(item.Id, item.Title, item.Price);
});
//Build viewModel
function viewModel() {
this.gifts = ko.observableArray(mappedData);
this.addGift = function() {
initCounter += 1;
var title = $("#newTitle").val();
var price = $("#newPrice").val();
var rec = new GiftRecord(initCounter, title, price);
this.gifts.push({
Id: rec.Id,
Title: rec.Title,
Price: rec.Price
});
};
this.removeGift = function(gift) {
this.gifts.remove(function(item2) {
return gift.Id == item2.Id;
});
};
this.testUpdate = function() {
this.gifts()[0].Title("test123");
};
this.save = function() {
ko.utils.postJson(location.href, {
gifts: ko.toJS(this.gifts()),
guid: giftsSignalR.guid
});
};
}
vm = new viewModel();
//Bind viewModel to HTML
$(function() {
ko.applyBindings(vm, $("#sample2")[0]);
});
这与以下内容基本相同:http: //jsfiddle.net/bdetchison/b4SsE/
请帮忙....