Emberjs注册并注入解释

时间:2014-11-10 02:19:45

标签: ember.js

使用Ember-Cli,我试图添加一个寄存器和一个适配器,然后将其注入控制器。我不明白我应该将哪些值传递给任何一个函数,或者为什么它们采用这种格式。

(以下由emberjs网页提供):

App.register('network:main', App.NetworkAdapter);
App.inject('controller', 'network', 'network:main');

具体来说,我不确定这个"类型:名称"格式是,我也不理解注入值如何与寄存器函数中的内容相关。

此外,是否有人知道以下错误对application.inject函数的意义?

  

"处理路由时出错:index无法创建实例   ' qservice:主&#39 ;.很可能是一个不正确定义的类或无效的   模块导出。"

代码:

export default {
    name: 'qservice',
    initialize: function(container, application){
      application.register("qservice:main", "qservice", {singleton: true});

      application.inject("controller",'qservice',"qservice:main");
    //application.inject("route",'qservice','adapter:main');
   }
};

1 个答案:

答案 0 :(得分:6)

寄存器功能的第二个参数应该是工厂(如果instantiate设置为false,则为实例)。工厂是您可以调用create的东西,它将返回一个实例。默认情况下,Singleton为true,因此无需指定它。

 var qservice = Em.Object.extend();
 application.register("qservice:main", qservice);


 var qserviceInstance = Em.Object.create();
 application.register("qservice:main", qserviceInstance, {instantiate:false});