我正试图找到一种方法来更新模型的单个属性而不会变脏。就像Store.load
一样,只有一个属性。
用例是我想上传一个头像图片(使用当前适配器的语义AFAIK无法完成)。我是针对特定的API端点进行的,之后我想用结果URL更新用户(所以他的所有头像外观都会更新)。
我在配置文件版本的上下文中,所以如果我只是加载整个用户,我会松开表单的所有更改(因为值被覆盖)。
有没有办法这样做?谢谢!
答案 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');
第二种方法虽然是丑陋的黑客。