AngularJS-控制器篇(controller)

  今天公司突然停電了,臨時回家,哈哈 莫名很興奮。

                              

                                

回家裏已經把工作做完,今晚上一起看個電影啊  度過愉快的週末~


說說今天的用的控制器  再出去耍 哈哈哈

控制器

什麼是控制器?

控制器是AngularJS的核心之一,它的作用主要是對視圖中的數據和事件處理函數進行掛載,同時進行一定的業務功能的底層封裝和處理。


用一段代碼看一下
var app = angular.module(“myApp”, []);  
  app.controller(“myCtrl”, function($scope) {  
     // 控制器函數操作部分  
     // 控制器主要進行數據的初始化操作和事件函數  
  的定義  
});  

控制器怎麼用?

          首先聲明模塊
          模塊下掛載控制器→控制器的作用範圍僅限於當前模塊→局部控制器
          Angular1.2版本以前,控制器的定義,是直接通過全局函數來實現的。
         控制器的意思,是可以在網頁中任意地方通過ng-controller進行註冊
          全局控制器造成了全局數據污染~!所以Angular在1.2版本以後進行了徹底修改
          廢棄了全局控制器~ 而是提倡使用掛載在模塊下的局部控制器!來更好的控制數據!

        
//控制器:全局控制器  
    function ctrl($scope){  
    $scope.name="tom"//掛載數據  
}  
這裏用到了掛載,抽空會單獨給大家講解這個~


控制器的作用

    1、通過$scope進行數據狀態的初始化操作
     2、通過$scope進行事件處理函數的掛載操作

控制器的使用注意事項

   不要用控制器做下面的事情:
        1、DOM操作:使用AngularJs中的數據雙向綁定和自定義指令執行操作
        2、表單處理:使用Angular中的form controls進行操作
        3、 數據格式化展示:使用Angular中的過濾器Filter來進行操作
        4、不同控制器之間的數據共享:使用Angular中的自定義服務Service進行處理

全局控制器和局部控制器

     AngularJS1.2版本之前,AngularJS中定義控制器,是直接定義成window全局函數進行處理的。
    這樣的控制器可以被所有的模塊共用,稱爲全局控制器;
    這樣的處理模式的優點是編寫方便,處理流程清晰;
    缺點是容易造成變量和函數的全局污染。
   所以AngularJS在1.2版本之後,進行了優化調整,廢棄了全局控制器,
   而是將控制器註冊在模塊中,成爲模塊中的局部控制器存在,局部控制器也就相當於限定了控制器的作用域範圍。
 

控制器的作用域


模塊中,可以給模塊掛在一個或者多個控制器,掛載好的控制器在當前的模塊範圍內,可以通過ng-controller指令  來指定控制的作用域。
 app.controller("myCtrl",function($scope){
        $scope.name=summer";
    });

多個控制器

    相信大家也對控制器有所瞭解了,
    根據上面我們知道,angularJS中view層解析是通過controller的作用域來將$scope對象解析成相應的內容。
    因此我們可以在同一個界面上劃分不同的模塊,通過不同的控制器控制不同的模塊來進行開發, 
    這樣通過劃分模塊的開發方式,對今後維護代碼帶來了便利。
    我們可以寫一個控制器:如


 <!DOCTYPE html>  
    <html   ng-app="myApp">  
    <head>  
         <meta charset="UTF-8">  
         <title></title>  
         <script src="js/angular.min.js"></script>  
    </head>  
    <body>  
            <p ng-controller="myCtrl">{{name}}</p>
            <div ng-controller="myCtrl2">  
                    {{name}}  
            </div>  
    <script>
            var app=angular.module("myApp",[]);
            app.controller("myCtrl",function($scope){
            $scope.name="summer";
              });
    </script>   
    </body>  
    </html> 

js中這麼寫  
app.controller('myCtrl', function ($scope) {  
        $scope.name = "summer";  
    });  

    app.controller('myCtrl2', function ($scope) {  
        $scope.name="zeoy";  
    });  

 
    這樣頁面就能完美的顯示出兩個不同的名字了
    這樣不同的controller他們scope對象是不一樣的, 
    即使都是用了name這個變量,可以看出controller之間是封閉的, 
    可是有時候我們面對兩個模塊之間進行數據交互,必然在兩個controller之間進行通信, 
    

 
 相信大家也對控制器有所瞭解了,中間有涉及到$scope掛載方面的知識,下次再分享啦~
 好了,最後預祝大家週末愉快~大笑

  相信大家也對控制器有所瞭解了,
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章