MsgController。$ inject = [' $ scope']

时间:2017-03-01 04:16:44

标签: angularjs

我是angularJS的新手,想知道以下内容是什么意思: 为什么在下面的陈述中重复了MsgController这个词:

angular.module('MsgApp', [])
            .controller('MsgController', MsgController);

这是什么意思:

MsgController.$inject = ['$scope'];

以下是完整代码:

<!DOCTYPE html>
<html ng-app='MsgApp'>
<head>
    <title></title>
    <meta charset="utf-8"/>
    <script src="angular.js"></script>
    <script>
        (function () {
            'use strict';
            angular.module('MsgApp', [])
                .controller('MsgController', MsgController);

            MsgController.$inject = ['$scope'];
            function MsgController($scope) {
                $scope.name = "Dog";
                $scope.stateOfBeing = "hungry";
                $scope.sayMessage = function () {
                    return "Dog like to eat healthy snacks";
                }

                $scope.feedDog = function () {
                    $scope.stateOfBeing = "fed";
                }
            }
        })();
    </script>
</head>
<body>
<h1>Expressions and Interpolation</h1>
<div ng-controller='MsgController'>
    {{name}} has a message for you:<br/>
    {{sayMessage()}}
    <div>
        <button ng-click="feedDog()">Feed Dog</button>
        <br/>
        <img ng-src="images/dog_{{stateOfBeing}}.jpg"/>
    </div>
</div>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

.controller('MsgController', MsgController);

这里,第一个参数表示Controller的名称,第二个参数表示功能,即映射到控制器的功能。

MsgController.$inject = ['$scope'];

它表示$ scope作为依赖项传递给控制器​​ MsgController

答案 1 :(得分:0)

嘿,你也可以像这样定义

angular.module('MsgApp',[])             .controller('MsgController',MsgController);

/ ** @注入* /

function MsgController($ scope){

//做点什么

}

在自动构建任务中使用gulp-ng-annotate或grunt-ng-annotate。

在任何具有依赖关系的函数之前注入/ * @ngInject * /。