在我能找到的每一条信息中(包括角度文档),将服务注入提供者的方式是通过$get
方法:
var myApp = angular.module('myApp', []);
myApp.provider('helloWorld', function() {
this.$get = function() {
return {
sayHello: function() {
return "Hello, World!"
}
}
};
});
function MyCtrl($scope, helloWorld) {
$scope.hellos = [helloWorld.sayHello()];
}
这可以在角度1.2 及以下版本中完美地工作:http://jsfiddle.net/1kjL3w13/
切换到角度 1.3 ,但$get
功能完全断开。似乎从$get
函数返回的任何内容都不再用于实例化提供程序,因此现在无法用于注入f.e.服务。
与上述相同,但使用 angular 1.3 :http://jsfiddle.net/duefnz47/
这正是角度文档中提供的行为。所以要么文档错了,要么我完全误解了它。我不太关心$get
方法是否像以前一样工作,但我只需要能够可靠地将服务注入我的提供者。
答案 0 :(得分:2)
问题是你使用的是根据角度1.3无效的全局控制器
所以使用
angular.module('myApp').controller('MyCtrl',function ($scope, helloWorld) {
$scope.hellos = [helloWorld.sayHello()];
});
此处已更新fiddle
**
** 希望它有所帮助:)