1

假设我有一个名为的工厂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) { }inMyFactory并直接使用工厂 ( MyFactory.myPublicFunc) 而不必使用new关键字创建一个新实例并仍然访问每个控制器的 $scope

4

1 回答 1

0

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

然后你可以做例如

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

module.controller('myCtrl', function(myService, $scope) {
    $scope.publicFn = myService.myPublicFn;
});
于 2014-02-06T09:43:35.747 回答