如何更新模型数据时,存储更新emberjs

How to update model data when store is updated emberjs

本文关键字:更新 存储 emberjs 数据 何更新 模型      更新时间:2023-09-26

我知道控制器现在在Ember中被弃用了,但我想知道我如何使用旧版本的Ember来实现这一点。

我有一个路由定义如下:

Ember.Route.extend({
    model : function(params) {
         return Ember.RSVP.hash({
             posts : store.find('post', {date : params.date, page : params.page})
         });
    },
    setupController : function(controller, model) {
        this.set('model', model.posts);
    }
});

一切正常,数据被加载。现在我决定从控制器动态加载数据。因此,在相应的控制器中,我做了如下操作:

Ember.ArrayController.extend({
    Ember.RSVP.hash({
             posts : store.find('post', {date : params.date, page : params.page})
    }).then(function(data) {
        this.store.pushPayLoad(this.store.modelFor('post'), data); 
    }.bind(this));
});

通过上面的方法,我能够在Ember Store中加载数据,但它没有加载到模型中。当数据在存储中可用时,建议采用什么方法更新模型?

只是澄清一下:为什么要将东西移动到控制器?

似乎最简单的方法是去掉所有的ArrayController代码,以及路由中的setupController方法,并按照如下方式设置模型:

Ember.Route.extend({
    model : function(params) {
         return this.store.find('post', {date : params.date, page : params.page});
    }
});

这是Ember首选的(也是期望的)获取带有参数的模型的方式。

为了进一步简化,假设参数的格式如下:

{
  date: SOME_DATE,
  page: SOME_PAGE
}

那么你所需要做的就是:

Ember.Route.extend({
    model : function(params) {
         return this.store.find('post', params);
    }
});

这将找到具有给定参数的所有帖子,并将它们分配给模型,然后将其作为模板中的{{model}}和控制器中的this.get('model');可用。