强制使用ember-data加载单个属性

时间:2013-02-28 18:08:25

标签: ember.js ember-data

我正试图找到一种方法来更新模型的单个属性而不会变脏。就像Store.load一样,只有一个属性。

用例是我想上传一个头像图片(使用当前适配器的语义AFAIK无法完成)。我是针对特定的API端点进行的,之后我想用结果URL更新用户(所以他的所有头像外观都会更新)。

我在配置文件版本的上下文中,所以如果我只是加载整个用户,我会松开表单的所有更改(因为值被覆盖)。

有没有办法这样做?谢谢!

2 个答案:

答案 0 :(得分:1)

你可以建模“阿凡达”#39;单独地,作为模型本身而不是属性。然后,可以通过商店更新该模型,而无需担心与其他用户模型发生冲突的更改。

答案 1 :(得分:0)

我可以想到两种方式,但我没有尝试过。 (他们都只是解决方法)

您可以设置不是DS.attr的用户属性。如果它是普通的属性,它不应该弄脏记录。

如果url是数据库属性,则创建一个侦听URL并在模板中使用它的计算属性。

App.User = Em.extend({
  url: DS.attr('string'),
  URL: function() {
    return this.get('url');
  }.property('url')
});

然后user.set('URL', imageUrl)

另一种方法是将记录转换为clean状态。

user.get('stateManager').send('becameClean');

第二种方法虽然是丑陋的黑客。