【问题标题】:How does Ember Data update the model?Ember Data 如何更新模型?
【发布时间】:2013-11-22 19:51:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: ember.js ember-data


    【解决方案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

    【讨论】:

    • 是的,我知道。我的问题是它从服务器获取结果后如何更新模型。
    • 知道了,我不太清楚你在说什么部分,这是一个更大的霰弹枪射击。
    • 那么,真的与 ember-data 无关,Ember 是与 promise 一起工作的那个吗?
    • 正确,但重要的是要注意它仅在模型挂钩上。这是唯一一个处理 Promise 解析并使用 Promise 的结果作为模型而不是 Promise 作为模型的钩子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    相关资源
    最近更新 更多