我有一个剑道网格结合淘汰赛。 我的Grid的源代码来自嵌套的observable数组。网格的最后一列包含一个用于删除行的按钮。我怎样才能删除?
<div data-bind="foreach: items">
<h5 style="color:red" data-bind="text:name"></h5>
<div id="selectedServices"
data-bind='kendoGrid: {
selectable: true,
data: sample,
columns: [
{ field: "id", title: "id"},
{ field: "name", title: "name"},
{ command:[{text: "x", className: "btnRemove" }]}
]}'
data-role="grid"></div>
<div>
答案 0 :(得分:2)
你的小提琴非常接近。您不希望在id
循环中添加foreach
,因为它会复制ID。一个选项是在父级(具有foreach
的父级)上添加一个id,并连接一个处理程序,如:
$("#selectedServices").on("click", ".btnRemove", function (e) {
var $current = $(e.currentTarget),
widget = $current.closest(".k-grid").data("kendoGrid"),
dataItem = widget && widget.dataItem($current.closest("tr")),
item = ko.dataFor($current[0]);
if (item, dataItem && dataItem.id) {
vm.removeSample(item, dataItem.id);
}
});
因此,我们通过查看被点击元素的祖先来获取网格实例,然后通过查看被点击元素所在的行来识别dataItem,最后使用id来删除该项。
在这里工作小提琴:http://jsfiddle.net/rniemeyer/L26q8/