【发布时间】:2014-07-19 15:09:27
【问题描述】:
我已经看到了一些将方法作为 mixins 添加到 AngularJS 控制器的示例。 例如:
(function () {
var app = angular.module('angularjs-starter', []);
var ParentCtrl = function ($scope, $location) {
$scope.path = function () {
return $location.absUrl();
};
};
app.controller('ChildCtrl', function($scope, $injector) {
$injector.invoke(ParentCtrl, this, {$scope: $scope});
$scope.url = $scope.path();
});
})();
我希望能够将新方法作为“mixin”添加到工厂。 我怎样才能做到这一点?无法将 $scope 传递给工厂。
例如,以下行不通:
var serv = angular.module('myModule', [])
serv.factory('myService', ['$scope', '$injector', function ($scope, $injector) {
...
【问题讨论】:
-
您不必将作用域传递给工厂。这就是阻止你做你想做的事情的原因吗?
-
我正在寻找一种方法来做 mixins 以添加工厂方法。我提出的所有 mixin 示例都是针对控制器的。在我为控制器找到的示例中,总是使用 $scope。
-
控制器通常会注入作用域,而工厂则没有。您可以将 rootScope 注入工厂,但通常这是不好的做法。
-
我希望能够为工厂或服务的方法添加一些方法。有没有其他方法可以做到这一点?
-
您可以将工厂注入到几乎任何 Angular 组件中,并使用其他方法和属性来装饰它。还有其他方法可以扩展它们。如果您想要更详细的答案,请更新您的问题,并提供有关您目标的更多细节。
标签: angularjs