Ember应用程序启动时加载内容的最佳做法

时间:2015-01-13 23:57:31

标签: javascript ember.js

我需要在应用程序启动时加载来自我的API的内容,然后将我得到的内容注入所有路由和控制器,以便能够随时访问它们。

我想知道在恩伯最好的地方在哪里?

  • 在初始化程序中?我听说从那里使用商店不是一个好习惯......
  • 在申请途径中?那么如何从所有路由和控制器访问它?使用this.modelFor('application')?这是一个好习惯吗?

感谢。

1 个答案:

答案 0 :(得分:0)

最好的位置是ApplicationRoute,您可以根据需要在beforeModelafterModel / setupController挂钩中执行此操作。这是一个beforeModel示例:

ApplicationController = Ember.ObjectController.extend({
    beforeModel:function() {
        var self = this;

        var rsvp = Ember.RSVP.hash({
            fruits: self.store.find('fruit'),
            candies: self.store.find('candy'),
            meats: self.store.find('meats')
        }};

        rsvp.then(function(models) {
           self.controllerFor('fruits').set('model',models.fruits);
           self.controllerFor('candies').set('model',models.candies);
           self.controllerFor('meats').set('model',models.meats);
        });
    }
});

rsvp将所有模型一起提取并等待它们先于then继续发生。然后,我们将所有找到的模型分配给匹配控制器上的model属性。

要在afterModel挂钩中执行此操作,它看起来会有所不同。