Javascript 为什么我会得到;不正确的注入令牌&引用;在这个应用程序代码中?
我试图通过AngularJS使用以下代码设置restful API接口:Javascript 为什么我会得到;不正确的注入令牌&引用;在这个应用程序代码中?,javascript,angularjs,dependency-injection,angularjs-factory,Javascript,Angularjs,Dependency Injection,Angularjs Factory,我试图通过AngularJS使用以下代码设置restful API接口: 'use strict'; (function(angular) { function ApiAction($resource, ResourceParameters) { return $resource(ResourceParameters.route, { }, { api_index: { method: ResourceParameters.method,
'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;
}
嗯,如果我这样做,我会得到这个:
错误:[$injector:itkn]不正确的注入令牌!预期服务名称为字符串,获取函数ResourceParameters()
@Nona您是否更改了superheroApp.factory('ResourceParameters',['$scope',ResourceParameters])代码>到超级英雄应用程序工厂('ResourceParameters',[ResourceParameters])代码>&另请查看更新的答案
superheroApp.factory('ApiAction', ['$resource', 'ResourceParameters', ApiAction]);