为什么我得到“不正确的注入令牌”!在这个angular应用程序代码中
Why am I getting "Incorrect injection token!" in this angular application code?
我试图通过AngularJS设置一个restful API接口,代码如下:
'use strict';
(function(angular) {
function ApiAction($resource, ResourceParameters) {
return $resource(ResourceParameters.route,
{ },
{ api_index: {
method: ResourceParameters.method,
isArray: true
}
});
return $resource(ResourceParameters.route,
{ },
{ create: {
method: ResourceParameters.method,
isArray: true
}
}
);
}
function ResourceParameters($scope) {
var factory = {};
factory.method = '';
factory.route = '';
factory.SetMethod = function(method) {
factory.method = method;
}
factory.SetRoute = function(route) {
factory.route = route;
}
return factory;
}
function superheroCtr($scope, ApiAction, ResourceParameters) {
$scope.superheroSubmit = function() {
// ApiAction.create({}, { superhero_name: $scope.superheroName, age: $scope.superheroAge });
angular.forEach($scope.superheroes, function(hero) {
// ApiAction.create({}, { superhero_name: hero.superhero_name, age: hero.age });
});
};
var heroesResources = ResourceParameters($scope).SetRoute('/api/');
var heroes = ApiAction.api_index({}, heroesResources);
$scope.superheroes = [];
heroes.$promise.then(function(data) {
angular.forEach(data, function(item) {
$scope.superheroes.push(item);
});
}, function(data) {
//if error then...
});
$scope.appendSuperheroFields = function() {
var i = $scope.superheroes.length + 1;
$scope.superheroes.push({"id": i, age: "", superhero_name: "" })
}
}
var superheroApp = angular.module('superheroApp', ['ngResource']);
superheroApp.controller('superheroCtr', ['$scope', 'ApiAction', 'ResourceParameters', superheroCtr]);
superheroApp.factory('ResourceParameters', ['$scope', ResourceParameters]);
superheroApp.factory('ApiAction', ['$resource', ResourceParameters, ApiAction]);
})(angular);
然而,当我运行它时,我得到以下错误:
错误:[$injector:itkn]不正确的注入令牌!
期望的服务名称为字符串,得到函数ResourceParameters($scope)为什么会这样?
你不能注入
$scope
或者你不能访问$scope
工厂内部
您的问题在这一行
superheroApp.factory('ResourceParameters', ['$scope', ResourceParameters]);
你需要用
替换那一行superheroApp.factory('ResourceParameters', [ResourceParameters]);
function ResourceParameters() { //<--removed $scope from here
var factory = {};
factory.method = '';
factory.route = '';
factory.SetMethod = function(method) {
factory.method = method;
}
factory.SetRoute = function(route) {
factory.route = route;
}
return factory;
}
另外,你应该纠正ApiAction
的声明,其中ResourceParameters
应该放在'
单引号内
superheroApp.factory('ApiAction', ['$resource', 'ResourceParameters', ApiAction]);
相关文章:
- 有人可以解释一下这个JavaScript / Angular代码是如何工作的
- 这两个 Angular 代码片段有什么区别
- JavaScript-用Angular代码替换jQuery$
- 为什么这个JavaScript / Angular代码不起作用
- 为什么这个Angular代码没有'不起作用
- 这个angular代码有什么问题?
- 为什么控制器中的数组赋值会破坏Angular代码
- 有人能在Codecademy - Calendar App的Angular代码中发现错误吗?
- 如何把angular代码放在单独的文件中
- 我怎样才能不再输入"$scope"在我的Angular代码中的每个变量和函数之前
- 如何在不引导的情况下执行Angular代码?
- 把我的Angular代码转换成TypeScript
- 为什么这个简单的Angular代码不能工作?
- Angular代码混乱的原因"Unknown Provider"消息
- Angular代码没有显示在html页面上
- 使用Karma测试Angular代码的问题
- 为什么后面的HTML代码仍然显示angular代码,而不是纯HTML
- 这段Angular代码有什么问题?
- 简单的Angular代码不起作用
- 绑定更多的Angular代码