【问题标题】:Angular - Trouble injecting a factory into a controllerAngular - 将工厂注入控制器时遇到问题
【发布时间】:2016-02-03 06:03:27
【问题描述】:

我正在尝试将我的 Angular 代码分离到工厂中,这样我的控制器就不会变得无法维护。具体来说,在我的工厂中,我将存放将在多个控制器之间共享的代码。

问题是,无论我做什么,我似乎都无法将工厂注入到我的控制器中。

这是我的工厂

angular.module('my-app')
    .factory('Game', function() {
        var colors = ['#FF0000', '#660000', '#FF3300', '#FF9900', '#003300',
                      '#000033', '#660033', '#FF0033', '#383838'];
    });

这是我的控制器

angular.module('my-app')
    .controller('gamesController', ['$scope', '$interval', 'Game', 
    function($scope, $interval, Game) {

这是我的装载顺序

<script src='scripts/app.js'></script>
<script src='scripts/services/game.js'></script>
<script src='scripts/controllers/navController.js'></script>
<script src='scripts/controllers/gamesController.js'></script>

我收到undefined provider,但我不知道问题出在哪里。

【问题讨论】:

  • 那是因为你的工厂没有任何返回值。试试return { colors: ['#FF0000', '#660000', '#FF3300', '#FF9900', '#003300','#000033', '#660033', '#FF0033', '#383838'];}
  • 工厂必须有退货声明?我对此一无所知。将对此进行测试

标签: angularjs dependency-injection controller factory


【解决方案1】:

Angular Factory 必须有返回结果。

语法:module.factory('factoryName', function);

结果:当将 factoryName 声明为可注入参数时,您将获得通过调用传递给 module.factory 的函数引用返回的值。

你的工厂应该是这样的:

angular.module('my-app')
    .factory('Game', function() {
        return { colors : ['#FF0000', '#660000', '#FF3300', '#FF9900', '#003300',
                      '#000033', '#660033', '#FF0033', '#383838']
               }
    });

如果您想了解更多详情,请访问AngularJS: Service vs provider vs factory

【讨论】:

  • 这对我帮助很大。让我省了很多麻烦。
猜你喜欢
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多