Ember Data如何更新模型?

时间:2013-11-11 04:57:27

标签: ember.js ember-data

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

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

你实际上没有给它任何对模型的引用,所以它如何更新或者如何从服务器返回结果时知道要更新什么?

1 个答案:

答案 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