如何将服务注入角度为1.3的提供程序

时间:2015-06-30 11:56:39

标签: javascript angularjs dependency-injection angularjs-service angularjs-provider

在我能找到的每一条信息中(包括角度文档),将服务注入提供者的方式是通过$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方法是否像以前一样工作,但我只需要能够可靠地将服务注入我的提供者。

1 个答案:

答案 0 :(得分:2)

问题是你使用的是根据角度1.3无效的全局控制器

所以使用

angular.module('myApp').controller('MyCtrl',function ($scope, helloWorld) {    
    $scope.hellos = [helloWorld.sayHello()];
});

此处已更新fiddle

**

Migration Document official

** 希望它有所帮助:)