我似乎在用Kendo UI绑定(bind)数据“计算”字段时遇到问题。
我正在尝试使用几个我称为“计算”字段的数据绑定(bind)。我在一个页面上有一个网格,几个按钮,过滤器和一些排序,它们都使用相同的数据源,一个称为“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;
按钮和其他信息框绑定(bind)到上一个,当前和下一个项目。但这似乎不起作用。我必须制作allItems数组中的内容的上一个,当前和nextItems副本,并同时更新这3个对象。没什么大不了的,但是,我只是想,如果没有必要,不要存储对象的副本。我希望在通过API时可能会错过与C#/Xaml类似的NotifyPropertyChanged(“MyProperty”)。由于我们计算字段的某些复杂性以及随着设备尺寸的减小而需要减少内存消耗的需求,这种功能对我将来列出的 future 任务最有用。
谢谢你的帮助,
大卫
最佳答案
只要 View 模型的属性发生更改,就会触发change event。
为了使它在计算字段中起作用,您需要使用ObservableObject.get()访问相关字段。请参阅文档中的this section。