Angular - 将工厂注入控制器

时间:2016-02-03 06:03:27

标签: angularjs dependency-injection controller factory

我试图将我的角度代码分成工厂,因此我的控制器不会变得无法维护。具体来说,在我的工厂中,我将包含将在多个控制器之间共享的代码。

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

这是我的工厂

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,我无法弄清楚问题出在哪里。

1 个答案:

答案 0 :(得分:1)

Angular Factory必须有返回结果。

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

结果:当将factoryName声明为injectable参数时,将为您提供通过调用传递给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