如果你这样做,我不明白ember数据如何更新模型
model: function() {
return this.store.find('something');
}
你实际上没有给它任何对模型的引用,所以它如何更新或者如何从服务器返回结果时知道要更新什么?
答案 0 :(得分:1)
该特定示例实际上是在请求something
的集合(全部)。
如果您正在寻找特定记录,您可以this.store.find('something', id)
其中id是一些唯一标识符。
this.store.find('something', 3)
this.store.find('something', "cool_post")
App.Something = DS.Model.extend({
someAttr = DS.attr()
});
var promise = this.store.find('something', 2);
promise.then(function(record){
//promise is resolved and the record is ready here
console.log(record.get('someAttr'));
}
find总会返回一个承诺。然后,Ember Data将异步搜索其缓存或调用服务器(或根据您的适配器调整夹具数据)。数据返回后,它将创建something
的实例(如上所述)。然后,它将使用与所用适配器关联的序列化程序,并将结果应用于something
的实例。
你的json应该采用的格式如下:
{
"something": {
"id": 1
"someAttr": "Rails is omakase"
}
}
模型钩子是一个特殊的钩子,如果你向它返回一个保证,它将等待并解决该保证并使用promise的结果而不是控制器模型的promise。
有关其他信息,请参阅余烬数据转换文档:https://github.com/emberjs/data/blob/master/TRANSITION.md