雙向資料繫結---AngularJS的基本原理學習

來源:互聯網
上載者:User

標籤:min   app   模組   又能   ons   jquery   也有   web應用   手工   

Angular JS (Angular.JS) 是一組用來開發Web頁面的架構、模板以及資料繫結和豐富UI組件。它支援整個開發進程,提供web應用的架構,無需進行手工DOM操作。 AngularJS非常小,僅僅有60K,相容主流瀏覽器。與 jQuery 配合良好。雙向資料繫結可能是AngularJS最酷最有用的特性,將MVC的原理展現地淋漓盡致.

AngularJS的工作原理是:HTML模板將會被瀏覽器解析到DOM中, DOM結構成為AngularJS編譯器的輸入。

AngularJS將會遍曆DOM模板, 來產生對應的NG指令,全部的指令都負責針對view(即HTML中的ng-model)來設定資料繫結。因此, NG架構是在DOM載入完畢之後, 才開始起作用的. 

簡單的使用例如以下:

在html中:

<body ng-app="ngApp"><div ng-controller="ngCtl"><label ng-model="myLabel"></label><input type="text" ng-model="myInput" /><button ng-model="myButton" ng-click="btnClicked"></button></div></body>
在js中:

// angular appvar app = angular.module("ngApp", [], function(){    console.log("ng-app : ngApp");});// angular controllerapp.controller("ngCtl", [ ‘$scope‘, function($scope){    console.log("ng-controller : ngCtl");    $scope.myLabel = "text for label";    $scope.myInput = "text for input";    $scope.btnClicked = function() {    console.log("Label is " + $scope.myLabel);    }}]);
如上,我們在html中先定義一個angular的app,指定一個angular的controller,則該controller會相應於一個範圍(能夠用$scope首碼來指定範圍中的屬性和方法等). 則在該ngCtl的範圍內的HTML標籤, 其值或者操作都能夠通過$scope的方式跟js中的屬性和方法進行綁定. 

這樣, 就實現了NG的雙向資料繫結: 即HTML中呈現的view與AngularJS中的資料是一致的. 改動其一, 則相應的還有一端也會相應地發生變化.

這種方式,使用起來真的很方便. 我們僅關心HTML標籤的樣式, 及其相應在js中angular controller範圍下綁定的屬性和方法. 僅此而已, 將眾多複雜的DOM操作全都省略掉了.

這種思想,事實上跟jQuery的DOM查詢和操作是全然不一樣的, 因此也有非常多人建議用AngularJS的時候,不要混合使用jQuery. 當然, 二者各有優劣, 使用哪個就要看自己的選擇了.

NG中的app相當於一個模組module, 在每一個app中能夠定義多個controller, 每一個controller都會有各自的範圍空間,不會相互幹擾.

看下邊這段html:

<div ng-app="dataApp">    單價: <input type="number" min=0 ng-model="price" ng-init="price = 299"><br>    數量: <input type="number" min=0 ng-model="quantity" ng-init="quantity = 1"><br>    總價: {{ quantity * price }}</div>
你會驚喜地發現, 甚至不用寫一行的JS代碼, 就可以完畢計算並在介面展示結果. 

即: 在前端html中使用{{ }}括起來的變數, 是跟AngularJS中相應的controller範圍內的屬性綁定在一起的. 實際上,{{}}等同於ng-bind指令, 即ng-bind="myData"就能將NG中的myData資料跟前端相應元素繫結在一起.這種話, 能夠很方便地做到從NG中擷取隨意資料並即時展示在頁面上了.

另外, $scope對象還提供了一個$apply方法, 用於進行html頁面上的更新, 使用方式為:

$scope.$apply(function(){$scope.myValue = "NewValue";});

$scope對象, 我們能夠理解為NG架構中的一個範圍對象, 在該範圍內能夠做到資料和視圖的相互綁定, 同一時候又能與其它$scope對象的範圍隔離開來. 

當然, $scope也能夠實現繼承, 這部分內容在以後接觸NG架構中其它對象的時候再分別做記錄.


雙向資料繫結---AngularJS的基本原理學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.