我的 Kendo Datasource <-> Backbone 连接在许多情况下都按预期工作,但我遇到了一种情况,希望有人知道更多。
从服务器同步模型或集合时,数据源也会更新,相应的 Kendo 控件也会更新。
但是,如果您已经加载了一个集合,并且您遍历该集合,对该集合中的模型进行更改,则链接的 DataSource 似乎没有得到更改。
例子:
我有一组显示为复选框选项的“标签”。我想根据来自服务器的其他数据将其中一些复选框显示为“已选中”(在这种情况下,我正在加载产品 - 并希望显示选择了哪些颜色):
this.colors.each(function (me) {
me.set('selected', '');
if ( _.findWhere(self.model.get('colors'), {id: me.id} ) ) {
me.set('selected', 'checked');
};
})
$('#colors').kendoListView({
dataSource: this.colors_datasource,
template: '<div class="checkbox"><input type="checkbox" value="#: id #" #:selected#> #: name #</div>'
});
'this.colors_datasource' 在这个主干视图的初始化方法中定义。它没有看到对集合“this.colors”中的主干模型进行这些更改。我认为这是因为模型没有同步到服务器。
如果我在这两个代码块之间添加定义,它会起作用:
this.colors.each(function (me) {
me.set('selected', '');
if ( _.findWhere(self.model.get('colors'), {id: me.id} ) ) {
me.set('selected', 'checked');
};
})
this.colors_datasource = new kendo.Backbone.DataSource({
collection: this.colors
});
$('#colors').kendoListView({
dataSource: this.colors_datasource,
template: '<div class="checkbox"><input type="checkbox" value="#: id #" #:selected#> #: name #</div>'
});
所以,我的问题:这是唯一的解决方案,还是有办法告诉已经定义的 DataSource 重新构建自己?
谢谢 - StackOverflow 摇滚!