0

如果您这样做,我不明白 ember 数据如何更新模型

model: function() {
   return this.store.find('something');
}

您实际上并没有给它任何对模型的引用,那么它如何更新或者当它从服务器获取结果时它如何知道要更新什么?

4

1 回答 1

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"
   }
}

模型钩子是一个特殊的钩子,如果你向它返回一个承诺,它将等待并解决该承诺并使用承诺的结果而不是控制器模型的承诺。

有关更多信息,请参阅 ember 数据转换文档:https ://github.com/emberjs/data/blob/master/TRANSITION.md

于 2013-11-11T06:42:03.483 回答