天天看點

AngularJS快速入門2--基礎文法

基礎文法結構

*1.*ng-app

Angular應用運作的入口指令。當網頁中引入Angular後,程式運作時會自動查找ng-app指令,并從這個入口開始加載編譯并解釋執行。

**代碼:**通常,頁面中會定義ng-app來指定入口,并在script中通過angular的module來加載ng-app指定的子產品。
    <html ng-app="myapp">
    <script>
        angular.module("myapp",[]);
    </script>
    </html>
**!代碼:**某些特殊情況下,也可以通過腳本來動态控制加載啟動Angular應用,通過angular.bootstrap(dom,module)來啟動應用。
    <html>
        <div id="myDiv"></div>
        <script>
            angular.module("myApp",[]);
            var _div=document.getElementById("myDiv");
            angular.bootstrap(_div,"myApp");        
        </script>
    </html>
           

*2.*angular.module()

Angular是通過子產品來管理我們前端項目中的資料的。子產品在應用啟動時就需要加載,是以Angular在設計的過程中對于入口指令進行了改造,可以綁定一個值,這個值就是系統的主子產品。

var app=angular.module("",[])   注:雙引号裡是通過ng-app的屬性值指定的子產品名稱。
           

*3.*ng-init,用于在程式運作的過程中,初始化一些變量的資料的操作(不推薦)。

*4.*ng-model=”“,資料綁定的指令,主要用于表單元素上的資料綁定。

*5.*mustache,就是雙大括号–{ { } },用于輸出變量的資料、進行資料的運算等。但網頁如果加載緩慢,會出現直接将大括号列印到頁面上的問題,是以通常開發項目時。使用ng-bind來代替。

*6.*ng-bind,資料綁定的指令,用于将變量的資料顯示到頁面上,用于替代mustache文法。

*7.*ng-controller,控制器指令,用于在頁面上指定控制器作用範圍,通常作為屬性出現。

*8.*ng-[event],時間指令,用于在頁面中發生某些事件時調用指令的函數。

重點:

$scope

作用域:

`$scope`是放在控制器函數中的一個參數。不需要傳值,而是angular自動指派。在操作的過程中`$scope`相當于一個容器,可以在它上面聲明變量或函數,`$scope`上的變量和函數會自動和視圖頁面中的變量進行綁定,稱為`$scope`挂載函數。
           

$rootScope

作用域:

`$rootScope`是AngularJS的根作用域,也是全局作用域,放在控制器函數中的一個參數,不需要傳值,Angular會自動指派,挂載在`$rootScope`上的資料,會被Angular應用中的所有子產品下的子子產品和控制器公用。但是存在一個問題: 因為控制器函數中可以直接使用$rootScope,就有可能會造成全局資料污染
    使用規範:$rootScope一般和Angular子產品的run()方法一起使用。來進行全局資料的初始化
           

$scope.$watch()

:挂載在

$scope

上,用于監聽模型資料的變化。

1. 監聽單個普通變量:
           
$scope$watch("one",function(){TODO one變量的資料發生變化執行的函數代碼});
           
2. 監聽多個普通變量:
           
$scope$watch("one+two",function(){TODO one或two變量的資料發生變化執行的函數代碼});
           
3. 監聽對象的資料:
           
$scope$watch("users.username",function(){TODO usres對象中的username屬性一旦發生變化執行的函數代碼});
           
4. 監聽對象的所有屬性:
           
$scope$watch("users",function(){TODO 監聽users對象的所有屬性,任一屬性值發生變化執行函數代碼},true);
           
5. 監聽數組資料,而不監聽數組中的對象資料:
           
$scope$watch("某數組",function(){TODO 一旦goodses數組中的元素,被删除、添加時執行函數的代碼});
           
6. 監聽資料發生變化的細節:修改前 VS 修改後:
           
$scope$watch("username",function(newValue,oldValue){console.log("資料被修改了", newValue, oldValue);});
           
7. `$watch`可以重複,不會被覆寫,都會執行!
           
$scope$watch("username",function(newValue,oldValue){console.log("data changed:", newValue, oldValue);});
           

Angular事件處理:

AngularJS中的事件操作,由于它自己虛拟DOM結構是以不支援普通事件,通常通過它自己的事件指令來調用通過$scope挂在到控制器中的函數執行完成,事件指令其實就是對于常見事件的封裝,以ng-開頭,加上事件名稱即可,如滑鼠單擊事件ng-click。
           

繼續閱讀