如何将绑定到KoGrid单元格的项目传递给ViewModel

Dav*_*veB 4 javascript knockout.js kogrid

HTML:

<div data-bind="koGrid: gridOptions" style="height:600px;border:solid 1px #ccc;"></div>
Run Code Online (Sandbox Code Playgroud)

JS:

列定义:

{ field: 'orderCatalogUpdateID', cellTemplate: '<button data-bind="click: $userViewModel.removeItem">X</button>', displayName: ' ', width: '2%' }`
Run Code Online (Sandbox Code Playgroud)

ViewModel上的removeItem函数:

self.removeItem = function (item) {
    self.list.remove(item);
}
Run Code Online (Sandbox Code Playgroud)

item获取传递给removeItem函数不是绑定到该行而是KoGrid列中的数据项.如何获取绑定到该行的数据项,以便将其传递给remove可观察数组上的函数?

我尝试使用jQuery和各种单元模板连接点击事件,试图传入绑定到行的数据项,但没有成功.

nem*_*esv 5

默认情况下,当前的datacontext将传递给click处理程序,该处理程序是当前列对象,如文档中所述:

$ data:kg.Column://列实体

您需要传递的是$parent.entity: //your data model当前行实体.

所以你需要改变你的绑定:

{ 
    field: 'orderCatalogUpdateID', 
    cellTemplate: '<button data-bind="click: ' + 
       ' function() { $userViewModel.removeItem($parent.entity); }">X</button>', 
    displayName: ' ', 
    width: '2%' 
}
Run Code Online (Sandbox Code Playgroud)

演示JSFiddle.