Ember:model.set vs store.update

时间:2014-08-13 19:08:39

标签: ember.js ember-data

我很好奇model.set('propertyName', propertyValue)store.update('modelType', {id: 1, propertyName: propertyValue})的区别

某些上下文:在我的应用程序中,您单击一个按钮来运行后台任务,一旦完成,我的应用程序将使用ajax从数据库中获取数据。数据更新后,显示数据的组件将更新并显示新数据。

当后台任务完成时,我尝试在我的控制器中执行以下操作:

var self = this;
return Ember.$.get('someURL').done(function(data) {
    // This deserializes the data so all attribute names are camelCase
    data = deserializeData(data) 
    // At this point, data = {id: 1, attrOne: "valueOne", attrTwo: "valueTwo"}
    self.store.update('modelName', data);
});

不幸的是,这不会触发视图中的任何更新,因此我的组件不会反映新数据。实际上,当我尝试执行this.get('model.attrOne')时,它会返回模型的旧数据。

然后我尝试了以下内容:

var self = this;
this.store.findById('modelName', modelId).then(function(model) {
    return Ember.$.get('someURL').done(function(data) {
        // This deserializes the data so all attribute names are camelCase
        data = deserializeData(data) 
        // At this point, data = {id: 1, attrOne: "valueOne", attrTwo: "valueTwo"}
        model.setProperties(data)
    });
});

现在,当我这样做时,一切都按预期工作,视图会正确地更新新数据。

我不明白为什么后者而不是前者呢?

0 个答案:

没有答案