Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当灰烬应用程序启动时加载内容的最佳实践_Javascript_Ember.js - Fatal编程技术网

Javascript 当灰烬应用程序启动时加载内容的最佳实践

Javascript 当灰烬应用程序启动时加载内容的最佳实践,javascript,ember.js,Javascript,Ember.js,当应用程序启动时,我需要加载来自API的内容,然后将我得到的内容注入所有路由和控制器,以便能够在任何时候访问它们 我想知道在灰烬哪里是最好的地方 在初始化器中?我听说从那里使用商店不是一个好习惯。。。 在申请途径中?那么如何从所有路由和控制器访问它?是否使用此.model作为“应用程序”?这是个好习惯吗? 谢谢。最好的位置是在应用程序路径中,您可以在beforeModel或afterModel/setupController挂钩中根据需要执行此操作。下面是一个beforeModel示例: rsv

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

我想知道在灰烬哪里是最好的地方

在初始化器中?我听说从那里使用商店不是一个好习惯。。。 在申请途径中?那么如何从所有路由和控制器访问它?是否使用此.model作为“应用程序”?这是个好习惯吗?
谢谢。

最好的位置是在应用程序路径中,您可以在beforeModel或afterModel/setupController挂钩中根据需要执行此操作。下面是一个beforeModel示例:

rsvp将所有模型一起获取,并在继续之前等待它们,然后再继续,这将在then上发生。然后,我们将所有找到的模型分配给其匹配控制器上的model属性


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

我不知道是否使用应用程序路由和此。modelFor'application'是最好的或推荐的方法,但它对我在那里加载主数据有效。我们已注册了一个会话对象。注册'session:main',session;然后注入所有的控制器。注入'controller','session','session:main';。我们只保留有关已登录用户的信息。您到底想加载什么类型的数据,这是通过余烬数据还是不通过余烬数据加载?你的问题不够具体。在我的情况下,我需要将数据注入我所有的控制器和路由中,根据你的建议,我如何才能做到这一点?路由不存储数据;仅限控制器。注入是什么意思?我将从api获取会话信息并存储它们,然后我需要检查这些会话信息,例如在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);
        });
    }
});