angular factory gives Error: [$injector:undef]
angular factory gives Error: [$injector:undef]
工厂看起来很简单,但我不知道这个错误是什么?!?
当我的控制器调用 ReportData.add 时,我得到
错误:[$injector:undef]
app.factory('ReportData', function() {
var factoryData = [];
var factoryService = {};
factoryService.add = function(myData) {
console.log('FACTORY ADD: ' + myData)
factoryData = myData;
};
factoryService.get = function() {
console.log('FACTORY GET: ' + factoryData)
return factoryData;
};
});
app.controller("test", function ($scope, $http, $location, ReportData) {
ReportData.add('SENDING DATA TO FACTORY');
console.log('get it: ' + ReportData.get());
})
您没有在函数末尾 returning 对象,这就是 angular 无法注入工厂的原因。
当你注入工厂时angular查找所有注册的工厂,然后执行相应的函数(仅一次)并缓存与[=17相同的对象的returning对象=] 将注入你的控制器。
如果您不 return 函数内部的任何内容 angular 都无法解决您的依赖关系。
app.factory('ReportData', function() {
var factoryData = [];
var factoryService = {};
factoryService.add = function(myData) {
console.log('FACTORY ADD: ' + myData)
factoryData = myData;
};
factoryService.get = function() {
console.log('FACTORY GET: ' + factoryData)
return factoryData;
};
return factoryService; //you're missing this return statement
});
工厂看起来很简单,但我不知道这个错误是什么?!?
当我的控制器调用 ReportData.add 时,我得到
错误:[$injector:undef]
app.factory('ReportData', function() {
var factoryData = [];
var factoryService = {};
factoryService.add = function(myData) {
console.log('FACTORY ADD: ' + myData)
factoryData = myData;
};
factoryService.get = function() {
console.log('FACTORY GET: ' + factoryData)
return factoryData;
};
});
app.controller("test", function ($scope, $http, $location, ReportData) {
ReportData.add('SENDING DATA TO FACTORY');
console.log('get it: ' + ReportData.get());
})
您没有在函数末尾 returning 对象,这就是 angular 无法注入工厂的原因。
当你注入工厂时angular查找所有注册的工厂,然后执行相应的函数(仅一次)并缓存与[=17相同的对象的returning对象=] 将注入你的控制器。
如果您不 return 函数内部的任何内容 angular 都无法解决您的依赖关系。
app.factory('ReportData', function() {
var factoryData = [];
var factoryService = {};
factoryService.add = function(myData) {
console.log('FACTORY ADD: ' + myData)
factoryData = myData;
};
factoryService.get = function() {
console.log('FACTORY GET: ' + factoryData)
return factoryData;
};
return factoryService; //you're missing this return statement
});