在MyController中访问rootScope变量的语法

时间:2016-03-21 16:50:34

标签: angularjs angularjs-rootscope

在下面的代码中,

<!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
            <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.20/angular.js"></script>
            <script type="text/javascript">

                function MyController() {
                    this.Name = "jag";
                    this.sal = "4500";
                } 

                MyController.prototype.getAnnualSal = function(){
                        return (this.sal) * 12;
                }
                var app = angular.module("sample", []).run(function($rootScope) {
                                                                $rootScope.variable = 1;
                                                            });
                app.controller("emp", MyController);

            </script>
        </head>
        <body ng-app="sample">
            <div ng-controller="emp as o" >
                Hello {{o.Name}}, your annual salary is {{o.getAnnualSal()}}

            </div>
        </body>
    </html>

使用run语法,模块($rootScope.variable)级别引入了sample

$rootScope.variable

中访问MyController? 的语法是什么?

2 个答案:

答案 0 :(得分:2)

在这样的控制器中注入rootScope。

 angular.module('sample', []).controller('emp', function($scope, $rootScope) {

 };
  

除了你的问题,我不知道为什么你在视图中混合控制器代码.Angular是建立在MVVM模式上的。所以建议分离控制器和视图。

答案 1 :(得分:0)

您可以执行以下操作,将$ rootScope注入控制器

<script type="text/javascript">

            function MyController($rootScope) {
                this.Name = "jag";
                this.sal = "4500";
            } 

            MyController.prototype.getAnnualSal = function(){
                    return (this.sal) * 12;
            }
            var app = angular.module("sample", []).run(function($rootScope) {
                                                            $rootScope.variable = 1;
                                                        });

            MyController.$inject = ['$rootScope'];
            app.controller("emp", MyController);

</script>