如何在Ember路径中静默更新模型

时间:2015-02-03 19:45:31

标签: ember.js

如果用户第一次访问路径,则让他们等待模型加载是有意义的。但是,一旦该路由已经加载了其模型,如果用户再次访问,我们希望立即使用加载的(陈旧)模型渲染模板,并在必要时在后台静默刷新它们。这就是我们想出的:

App.TeamsRoute = Ember.Route.extend({
  setupController: function(controller, model) {
    this._super(controller, model);
    var teams = this.store.find('team', {is_archived: false});
    if(!controller.get('content.length')) {
      // loadable mixin sets isLoading=true until model resolves
      // useful for rendering template immediately,
      // and showing a loading spinner where models will appear
      controller.load(teams);
    } else {
      teams.then(function() {
        // only update if changed
        if(controller.get('content') !== teams) {
          controller.set('content', teams);
        }
      });
    }
  }

这似乎是一种非常常见的场景,尤其适用于具有大型模型的arrayControllers。所以我的问题是:

这个概念叫做什么?ember.js是否有任何现有的mixins / implementation?

0 个答案:

没有答案