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

Angularjs MsgController.$inject=[';$scope';],angularjs,Angularjs,我是angularJS的新手,想知道以下内容的含义: 为什么下面的语句中重复了单词MsgController: angular.module('MsgApp', []) .controller('MsgController', MsgController); 这意味着什么: MsgController.$inject = ['$scope']; 以下是完整的代码: <!DOCTYPE html> <html ng-app='MsgApp'> &

我是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>

(功能(){
"严格使用",;
angular.module('MsgApp',[])
.控制器(“MsgController”,MsgController);
MsgController.$inject=['$scope'];
函数MsgController($scope){
$scope.name=“狗”;
$scope.stateOfBeing=“饥饿”;
$scope.sayMessage=函数(){
返回“狗狗喜欢吃健康零食”;
}
$scope.feedDog=函数(){
$scope.stateOfBeing=“美联储”;
}
}
})();
表达式与插值
{{name}}有一条消息给你:
{{sayMessage()}} 喂狗
这里,第一个参数表示控制器的名称,第二个参数表示功能,即映射到控制器的功能

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

它表示$scope作为依赖项传递给控制器
MsgController
嘿,您也可以这样定义

angular.module('MsgApp',[]) .控制器(“MsgController”,MsgController)

/**@注入*/

函数MsgController($scope){

//做点什么

}

在自动生成任务中使用gulp ng annotate或grunt ng annotate


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

这样注入$scope有什么好处吗?没有明显的优势,但它是注入依赖关系的一种方式,您可以在控制器的单元测试中发现$Inject服务被用于注入依赖关系。这是一种优势。如果您没有此行,或者没有使用
.controller('MsgController',['$scope',MsgController])
声明您的控制器,那么当您尝试缩小控制器时,您的代码将被破坏。所有这些都在依赖项注入的角度文档中进行了解释:。在缩小之前,您还可以使用ng annotate为您插入这些说明。这些是基本问题。请调查一下这件事。你可能会在这里得到你所有的答案。
MsgController.$inject = ['$scope'];