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-没错,缩小代码时它会起作用,但如果缩小变形也不会起作用。我明白了。在这两种情况下,您都不能混合定义参数名,而不能,请选择一个并坚持使用。