如何访问工厂注入的$ scope?

时间:2014-02-06 09:36:34

标签: angularjs angularjs-scope angularjs-factory

假设我有一个名为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

1 个答案:

答案 0 :(得分:0)

如果你使用.service而不是.factory,一旦你通过DI注入它就会在控制器中有一个单例实例

然后你可以做例如

module.service('myService', function() {
    return {
        myPublicFn: function() {}
    }
});

module.controller('myCtrl', function(myService, $scope) {
    $scope.publicFn = myService.myPublicFn;
});