从kendo网格绑定中移除项目到knockout嵌套的observable

时间:2014-04-23 03:22:54

标签: jquery knockout.js kendo-grid knockout-kendo

我有一个剑道网格结合淘汰赛。 我的Grid的源代码来自嵌套的observable数组。网格的最后一列包含一个用于删除行的按钮。我怎样才能删除?

http://jsfiddle.net/rqL3E/

 <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>

1 个答案:

答案 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/