使用Angular服务后的未定义对象

时间:2015-11-25 14:44:27

标签: javascript angularjs service

创建此服务但获取未定义的对象错误。所以对象是空的,但为什么,我觉得我做得对。

var app = angular.module('rollerApp', []);

app.factory('RollerService', function() {
    var rollers = [
        'roller1',
        'roller2',
        'roller3'
    ];

    return {
        get: function() {
            return rollers;
        },
    };
});

app.controller('Index', ['$scope',function($scope,RollerService) {
    $scope.rollers = RollerService.get;
}]);
  

TypeError:无法读取属性' get'未定义的

整体Javascript的初学者,所以一些解释会很好。

1 个答案:

答案 0 :(得分:2)

您还没有注入RollerService

app.controller('Index', ['$scope', 'RollerService', function($scope, RollerService) {
  $scope.rollers = RollerService.get;
}]);

通过分析函数参数的名称,Angular的依赖注入试图变得聪明。但是,为了防止代码损坏(将参数名称转换为ab等晦涩的名称)引起的问题,您需要通过将依赖关系列为字符串来显式地注释您的函数。定义函数本身。

了解更多:

一旦了解了Angular的依赖注入的工作原理,您就可以使用ng-annotate之类的工具来避免手动设置$inject