找到了合理的解决方案。将其注入bootstrap方法(运行),并将其添加到根范围。从那里它将对所有控制器和视图可用。
myApp.run(function ($rootScope, $location, $http, $timeout, FooService) { $rootScope.foo = FooService; ....重新阅读我上面提到的帖子,它没有完全说“包装”……只是“抽象”,所以我认为张贴者指的是相同的解决方案。
为了全面,对(1)的答案为:
myApp.controller('FooCtrl', ['$scope', function ($scope) { // scope inherits from root scope $scope.foo.doSomething(); ...(2)的答案很简单:
{{doSomething()}}添加克里斯托弗的评论以确保它被看到:
@rob-
根据最佳实践,应该将工厂注入需要使用它的控制器中,而不是在根范围上。如所问到的,第一个问题实际上是反模式。如果需要工厂100次,则注入100次。最小化时几乎没有任何多余的代码,并且可以很清楚地知道工厂的使用位置,并且通过在功能签名中列出所有必需的工厂,可以更轻松(更明显)地使用模拟方法测试那些控制器。–
Christopher WJ Rueber 13年11月25日在20:06



