假设我有一个名为MyFactory
的工厂,我将其注入几个控制器。如何访问工厂内的控制器范围?
我目前想到的唯一方法如下:
app.factory('MyFactory', function() {
return function($scope) {
myPublicFunc: function() {
$scope.$on('$destroy', function() { ... });
}
}
});
app.controller('MyController1', ['$scope', MyFactory', function($scope, Myfactory) {
var factory = new MyFactory($scope);
factory.myPublicFunc();
});
但是有没有其他方法我可以在{ }
中返回function($scope) { }
而不是MyFactory
并直接使用工厂(MyFactory.myPublicFunc
)而不必创建new
关键字的新实例仍可访问每个控制器的$ scope ?
答案 0 :(得分:0)
如果你使用.service
而不是.factory
,一旦你通过DI注入它就会在控制器中有一个单例实例
然后你可以做例如
module.service('myService', function() {
return {
myPublicFn: function() {}
}
});
和
module.controller('myCtrl', function(myService, $scope) {
$scope.publicFn = myService.myPublicFn;
});