1

我正在使用剑道网格并有一个带有以下模板的复选框列:

"<input class='gridCheckbox' id='gridCheckbox_#=name#' name='Selected' type='checkbox' ng-model='dataItem.checked'/>"

此外,我还使用 observableArray 作为网格的数据源。单击 chekcbox 时,observableArray 中的数据会按预期更改,但不会触发“更改”事件。这是我定义 observableArray 的方式:

var obsArray = new kendo.data.ObservableArray(scope.gridData);
this.gridDataSource = new kendo.data.DataSource({
     data: obsArray
 });
 obsArray.bind("change", function (e) {
     console.log(e.action, e.field);
 });

“scope.gridData”是原始数据模型。当我单击复选框时,observableArray 已更改,但“scope.gridData”未更改。为了更改“scope.gridData”,我想听“change”事件并手动更改“scope.gridData”,但正如我所说,“change”事件不会被触发。

关于我做错了什么的任何建议,也许有更好的解决方案。

4

3 回答 3

1

读这个

你的问题是剑道使用你的范围对象的副本

于 2015-03-20T01:07:06.233 回答
0

我手动向我的输入复选框添加了一个事件(在我们的课程中,我们使用的是 Angular,所以它在 ng-click="doSomething()" 但也许你的只是 click="doSomething" 并记录了手动处理布尔更改。

我们也有 Kendo Observables - 但我很幸运,因为我们还使用了 Breeze JS 的东西,一旦数据向后传播到正确的位置以设置为脏,我们可以在其中进行数据检测和刷新网格。(grid.dataSource.read();)

如果您想要完整的行值,请单击 =“doSomething(this)”,然后将其捕获为发件人。只需调试,您应该将 dataItem 附加到发件人。

于 2014-10-28T19:06:03.553 回答
0

这可能会对您有所帮助,这不是正确的数字,但我做了一个与您的问题类似的示例

 var contentData = [
      { organization: 'Nihilent', os: 'Window' }
    ];

    var nihl = contentData[0];

    var viewModel = kendo.observable({
      gridSource: new kendo.contentData.DataSource({
        contentData: contentData
      })
    });

    kendo.bind($(document.body), viewModel);

    contentData.push({ organization: 'Dhuaan', os: 'Android' });

    nihl.set('os', 'iOS');
于 2016-08-11T06:12:12.367 回答