使用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');
}
};
答案 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});