Kendo UI - 属性改变MVVM

Dav*_*ook 4 javascript jquery html5 mvvm kendo-ui

我似乎遇到了与Kendo UI数据绑定"计算"字段的问题.

我试图用几个我称之为"计算"字段的数据绑定.我有一个网格,几个按钮,过滤器和页面上的一些排序,它们都使用相同的数据源,一个名为'allItems'的可观察数组.allItems通过服务调用填充,并在用户通过按钮在页面上时进行排序,操作和以其他方式更改.

根据当前过滤器和应用的排序,根据前一项中的信息,当前项和下一项填充了几个导航按钮和几个div.这些按钮包含从上一个,当前项和下一个项中提取的信息,因为它们与allItems列表相关(即对象实际上保存在allItems数组中,实际上是可观察对象).

所以在viewmodel对象中我有这样的东西(请原谅简短处理):

var viewmodel = kendo.observable({
var allItems = observablearray[]

var currentIndex = 1; //or other default value

var changeCurrentItem = function(){
    var self = this;
    //do some stuff
    //stuff might include modification to allItems
    self.set("currentIndex", someNewValue);
}

var previousItem = function(){
    return self.get('allItems')[currentIndex - 1];
}

var currentItem = function(){
    return self.get('allItems')[currentIndex];
}

var nextItem = function(){
    return self.get('allItems')[currentIndex + 1];
});

return viewmodel;
Run Code Online (Sandbox Code Playgroud)

按钮和其他信息框绑定到上一个,当前和下一个项目.但这似乎不起作用.我必须制作allItems数组中的previous,current和nextItems副本,并同时更新这3个对象.这不是什么大不了的事,但我想,如果我不需要的话,我不想存储对象的副本.我希望可能有一个与C#/ Xaml类似的NotifyPropertyChanged("MyProperty"),这是我在通过API时遗漏的.由于我们计算字段的一些复杂性以及随着设备变小而减少内存消耗的需要,这种功能对于我列表中的未来任务对我来说最有用.

谢谢你的帮助,〜大卫

Lar*_*ner 6

只要视图模型的属性发生更改,就会触发更改事件.

要使计算字段中的此工作,您需要使用ObservableObject.get()访问相关字段.请参阅文档中的此部分.