gpt4 book ai didi

javascript - Kendo 数据源 - 主干 - 对主干模型所做的更改未在数据源中同步

转载 作者:行者123 更新时间:2023-11-28 08:29:52 26 4
gpt4 key购买 nike

在很多情况下,我的 Kendo 数据源 <-> Backbone 连接按预期工作,但我遇到了一种情况,我希望有人了解更多信息。

当模型或集合从服务器同步时,数据源也会更新,相应的 Kendo 控件也会更新。

但是,如果您已经加载了一个集合,并且循环访问该集合,对该集合中的模型进行更改,则链接的数据源似乎没有获得更改。

示例:

我有一组显示为复选框选项的“标签”。我想根据来自服务器的其他数据将其中一些复选框显示为“已选中”(在本例中,我正在加载产品 - 并希望显示选择的颜色):

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”在此主干 View 的初始化方法中定义。它没有看到对“this.colors”集合中的 Backbone 模型进行这些更改。我认为这是因为模型没有同步到服务器。

如果我在这两个代码块之间添加定义,它就会起作用:

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>'
});

所以,我的问题:这是唯一的解决方案,还是有办法告诉已经定义的数据源重建自身?

谢谢 - StackOverflow 太棒了!

最佳答案

我猜有一个时间问题。也许,在它不起作用的情况下,数据源初始化不正确?

您在底部提供的代码是您应该如何执行的操作。 From the docs您可以阅读 kendo.Backbone.DataSource 提供了获得 2 路绑定(bind)的魔力。如果没有这个,kendo ui 就不会知道来自主干集合的更改事件。他们在那里提供了与您在此处建议的非常相似的示例代码。

我也想对此行发表评论:

I presume that this is because the models are not syncing to the server.

Backbone.Events 系统的优点之一:它不需要往返服务器即可使 UI 与更改保持同步。只要处理基本的集合事件addremovechange等,您就可以使界面保持最新,而无需与您的用户交谈。服务器。

关于javascript - Kendo 数据源 - 主干 - 对主干模型所做的更改未在数据源中同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21995461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com