2016-03-21 51 views
0

在下面的代碼,語法訪問rootScope變量myController的

<!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)水平引入。

什麼是控制器這樣在MyController?

回答

2

進樣rootScope的語法來訪問$rootScope.variable

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

}; 

除了你的問題,我不知道你爲什麼在view.Angular混合控制器代碼是建立在控制器和視圖的MVVM pattern.So分離建議。

+0

**一柔:**在我的代碼,什麼是創造'Name'和'sal'作爲成員的優勢控制器實例('o')而不是'$ scope'的成員?僅供參考..我知道控制器實例是$ scope的成員。一個引用-http://codetunnel.io/angularjs-controller-as-or-scope/ – overexchange

+0

所以,我們不能採取類似的方法,而不在控制器中注入'$ rootScope'?否則,我確實知道你在回答 – overexchange

+0

中寫的語法@proxchange:你在用rootScope做什麼?當我們擁有諸如服務和工廠之類的東西時,不應該使用'$ rootScope'來共享變量。但是您可以使用'.scope()。$ root'來間接獲取rootscope; –

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>