contentsRect
factory.js
app.config(['$controllerProvider','$compileProvider', '$filterProvider', '$provide',function($controllerProvider,
$compileProvider, $filterProvider, $provide) {
app.register = {
controller: $controllerProvider.register,
directive: $compileProvider.directive,
filter: $filterProvider.register,
factory: $provide.factory,
service: $provide.service
};
}
]);
app.controller('myCntrl', ['$scope', function($s) {
app.register.factory('customFactory',[customFactory]);
customFactory.init();
});
在这里,我将在运行时中添加factory.js文件,现在需要在控制器中注入自定义工厂。因此,我使用了 $ provide.factory 方法。但是,我无法在 customFactory
中调用 init()函数答案 0 :(得分:1)
在动态注册customFactory
的控制器中,customFactory
名称绑定只是一个函数。要在您提到的位置调用init()
,您需要将customFactory
作为函数调用。
customFactory().init();
但是,如果您在其他地方(例如控制器)还有其他需要依靠customFactory
的食谱,那么您可以按预期访问init()
。
app.controller('anotherCtrl', ['customFactory', function (customFactory) {
customFactory.init(); // OK!
}]);
customFactory
被注册时,AngularJS依赖注入器知道如何将其创建为单例,随后您就可以将其作为值来访问。