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
});