【问题标题】:angular factory gives Error: [$injector:undef]角度工厂给出错误:[$injector:undef]
【发布时间】:2017-10-14 07:03:21
【问题描述】:

工厂看起来很简单,但我不知道这个错误是什么?!?

当我的控制器调用 ReportData.add 我得到 ​​p>

错误:[$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());

})

【问题讨论】:

    标签: angularjs factory


    【解决方案1】:

    你没有在函数结束时返回对象,这就是为什么 angular 无法注入工厂。

    当您注入工厂 Angular 时,查找所有已注册的工厂,然后执行相应的函数(仅一次)并缓存返回的对象,该对象与 Angular 将在您的控制器中注入的对象相同。

    如果你在函数内没有返回任何东西,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
    });
    

    【讨论】:

    • 哇!!那做了一些事情......现在我的工厂进入了无限循环。我想把所有东西都放在 app.js 中是个坏主意:-D
    • 哎呀...如何让它停止?我什至杀死了网络服务器,它仍然不断吐出这些:link
    • 您的代码中应该还有其他错误。这段代码在 return 语句中看起来很好
    • 知道了!!哈哈,拥有超快 PC 对您不利的例子之一。垃圾邮件错误如此之快,以至于我无法清空缓存。无论如何,我解决了它,它现在很好用!!!非常感谢@Karim :-)
    • 很高兴你修好了 :)
    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    相关资源
    最近更新 更多