【发布时间】:2013-11-22 19:51:19
【问题描述】:
如果你这样做,我不明白 ember 数据如何更新模型
model: function() {
return this.store.find('something');
}
你实际上并没有给它任何对模型的引用,那么它如何更新或者当它从服务器返回结果时它如何知道要更新什么?
【问题讨论】:
标签: ember.js ember-data
如果你这样做,我不明白 ember 数据如何更新模型
model: function() {
return this.store.find('something');
}
你实际上并没有给它任何对模型的引用,那么它如何更新或者当它从服务器返回结果时它如何知道要更新什么?
【问题讨论】:
标签: ember.js ember-data
那个特定的例子实际上是请求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"
}
}
模型钩子是一个特殊的钩子,如果你向它返回一个承诺,它会等待并解决该承诺,并使用承诺的结果而不是控制器模型的承诺。
有关更多信息,请参阅 ember 数据转换文档:https://github.com/emberjs/data/blob/master/TRANSITION.md
【讨论】: