Knockout.js 如何立即刷新与可编辑击倒剑道网格绑定的KO.计算字段?
我正在尝试在剑道网格中创建一个双向绑定。在剑道网格中使用编辑功能并在视图模型上计算可观测值时,必须具有双向绑定。我能找到的唯一解决方案是: 在此示例中,使用KO.computed字段基于上述解决方案创建feedle ,在单击“同步”按钮之前,编辑的数据不会更新视图模型。如何立即更新它 以下是我的解决方案:Knockout.js 如何立即刷新与可编辑击倒剑道网格绑定的KO.计算字段?,knockout.js,kendo-ui,kendo-grid,Knockout.js,Kendo Ui,Kendo Grid,我正在尝试在剑道网格中创建一个双向绑定。在剑道网格中使用编辑功能并在视图模型上计算可观测值时,必须具有双向绑定。我能找到的唯一解决方案是: 在此示例中,使用KO.computed字段基于上述解决方案创建feedle ,在单击“同步”按钮之前,编辑的数据不会更新视图模型。如何立即更新它 以下是我的解决方案: var grid = $("#grid").data("kendoGrid"); grid.bind("save", grid_save); grid_save = function (e
var grid = $("#grid").data("kendoGrid");
grid.bind("save", grid_save);
grid_save = function (e) {
if (e.values.first) { // Check if the first name changed
if (e.values.first != e.model.first) {// Compare with previous value
var people = self.people() || []; // Navigate through KO view model
$.each(people, function () {
if (this.first() == e.model.first) {
this.first(e.values.first); // Update KO View Model
}
});
}
}
我正在尝试使用网格的保存事件立即更新视图模型。这意味着此事件将在每次单元格更改时触发。看起来有点难看。
还有其他优雅的解决方案吗?我已经用以下内容更新了您的解决方案。
您可以只更新更改的行,而不是遍历所有数据
希望这有帮助
var getWidget = function (elem){
return $(elem).data('kendoGrid');
};
var updateModel = function (model, modelChanges){
for (prop in modelChanges) {
model[prop](modelChanges[prop]);
}
};
this.grid_save = function (e) {
var grid = $("#grid");
var widget = getWidget(grid.get(0));
var gridData = widget.dataSource.data();
var row = $(e.container).closest("tr");
var rowIdx = grid.find("tr").index(row);
var colIdx = widget.cellIndex(e.container);//$("td", row).index(this);
var idx = gridData.indexOf(e.model);
var model = self.people()[idx];
updateModel(model, e.values);
};