Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用角度服务后未定义的对象_Javascript_Angularjs_Service - Fatal编程技术网

Javascript 使用角度服务后未定义的对象

Javascript 使用角度服务后未定义的对象,javascript,angularjs,service,Javascript,Angularjs,Service,创建此服务,但获取未定义的对象错误。所以这个对象是空的,但是为什么,我觉得我做得对 var app = angular.module('rollerApp', []); app.factory('RollerService', function() { var rollers = [ 'roller1', 'roller2', 'roller3' ]; return { get: function() {

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

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初学者,因此进行一些解释会很好。

您还没有注入
RollerService

app.controller('Index', ['$scope', 'RollerService', function($scope, RollerService) {
  $scope.rollers = RollerService.get;
}]);
Angular的依赖项注入试图通过分析函数参数的名称来实现智能化。但是,为了防止代码损坏(这会将参数名变成模糊的名称,如
a
b
,等等)引起的问题,您需要在定义函数本身之前,通过将依赖项列为字符串来显式注释函数

阅读更多:


一旦您了解Angular的依赖项注入是如何工作的,您就可以使用类似这样的工具来避免手动设置
$inject

我以为我将其注入函数参数中的“RollerService”中了?为什么需要定义两次呢?我想你可以只使用
app.controller('Index',function($scope,RollerService){…
,但如果缩小代码,这将不起作用。@Arg0n-没错,缩小代码时它会起作用,但如果缩小变形也不会起作用。我明白了。在这两种情况下,您都不能混合定义参数名,而不能,请选择一个并坚持使用。