KendoUI:将视图模型绑定到数据源更改

时间:2012-12-11 10:56:32

标签: mvvm datasource kendo-ui

我有一个可观察对象,它定义了一个指向绑定到网格的数据源的指针,以及一个自定义字段,它应该返回我在数据源中声明的聚合值。

我想将第二个字段(“totAmount”)绑定到自定义HTML元素。

我不明白如何更新它的值:当我调用数据源的“read()”方法时,不应该在接口上更新绑定值吗?它只适用于“原始”模型字段吗?

=== JAVASCRIPT ===
var vm = kendo.observable({
    gridDatasource: new kendo.data.DataSource({ ... }),

    totAmount: function() {
        var ds = this.get("gridDatasource");
        var value = (ds.aggregates()) ? ds.aggregates().totAmount : 0;
        return value;
    }
});

=== HTML ===
<span data-bind="text: totAmount"></span>

2 个答案:

答案 0 :(得分:2)

我以前的回答并不完全正确:它会对网格更改(每行选择)上的模型更新进行绑定。最好将它绑定到数据源的“change”事件:

=== JAVASCRIPT ===
var vm = kendo.observable({
    gridDatasource: new kendo.data.DataSource({ ... }),
    totAmount: 0
});

vm.gridDatasource.bind("change", function(e) {
    vm.set("totAmount", this.aggregates().totAmount);
});


=== HTML ===
<span data-bind="text: totAmount"></span>

答案 1 :(得分:0)

到目前为止,我找到了一个类似于我上一篇文章(bind HTML elements to grid selected row/dataItem)的解决方案,将绑定到数据源的网格的“更改”事件中的值设置为:

=== JAVASCRIPT ===
var vm = kendo.observable({
    gridDatasource: new kendo.data.DataSource({ ... }),
    totAmount: 0
});

$("#grid").kendoGrid({
    change: function(e) {
        vm.set("totAmount", this.dataSource.aggregates().totAmount);
    }
});


=== HTML ===
<span data-bind="text: totAmount"></span>