AngularJS通過新的屬性與表達式來擴展HTML,有一種很形象的叫法,定義它為聲明式語言。 為剋服HTML在構建應用上的不足而設計! 這是它的目標。 它的官網進不去,應該是被牆了,這是goegle的團隊弄的。所以找了個應用AngularJS的網站,然後另存為下來的。 以一段簡單的代碼開頭 <di
AngularJS通過新的屬性與表達式來擴展HTML,有一種很形象的叫法,定義它為聲明式語言。
為剋服HTML在構建應用上的不足而設計!
這是它的目標。
它的官網進不去,應該是被牆了,這是goegle的團隊弄的。所以找了個應用AngularJS的網站,然後另存為下來的。
以一段簡單的代碼開頭
<div ng-app="myApp" ng-controller="myCtrl" ng-init="num1=3;num2=4"> <span ng-bind="num1">3</span> 省 <input type="text" ng-model="provinceName"><br> 市 <input type="text" ng-model="cityName"><br> 區 <input type="text" ng-model="areaName"><br> <br> 地址: {{provinceName + "省" + cityName+ "市" + areaName+"區"}} </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.provinceName= "湖北"; $scope.cityName= "武漢"; $scope.areaName= "洪山"; }); </script>
在上面代碼中,以ng-*這樣的格式書寫的屬性,都是AngularJS定義的新屬性。
其中ng-app所在的div為名叫myApp的AngularJS應用程式。
ng-controller 用於控制 AngularJS 應用.
ng-init在相當於在AngularJS應用程式初始化時,啟用的一段JS代碼。
ng-model相當於綁定一個輸入框,到AngularJS應用程式的指定的變數上。
ng-bind綁定AngularJS應用程式里的指定變數到HTML元素上。
但是這裡我們也採用了更簡便的做法,{{}}表達式。AngularJS的表達式,就是相當於一段javascript表達式的計算。AngularJS 表達式不支持條件判斷,迴圈及異常,但支持過濾器。
AngularJS入門就是這麼簡單。
AngularJS的對象和變數
來一個展示AngularJS的對象和變數的例子
<div ng-app="" ng-init="myInfo={Name:'Troy123',Job:'程式員'};points=[1,3,2,2,1]"> <p>信息:{{ myInfo.Job+":"+myInfo.Name }}</p> <p>第一個值為 {{ points[0] }}</p> </div>
這段代碼很形象,於是讓我們腦補一下自己用JS如何去實現吧。
雖然按我現在的水準而言實現很有難度,但是我們知道它可能是怎麼玩的,更利於我們學習。
腦補實現(我自己思考的實現,並沒有看具體代碼)
HTML操作
那麼首先我寫個JS去查找這個HTML里的屬性為ng-app的元素,然後查找ng-init的屬性,並執行裡面的代碼。
這樣我們得到了名為myInfo的對象和名為points的數組。
然後搜它的子級元素,搜索{{ 表達式的符號,或者ng-bind表達式,或者ng-model,搜到表達式就執行表達式得到結果就放在HTML上好了。
JS操作
而在後面用app.controller來控制就更簡單了,同樣找到元素,操作這個叫myApp的命名空間(應該是個函數體)里的變數的值,就算頁面上沒有變數,JS也會自動加一個內部變數。
然後去找頁面上ng-model和ng-bind或者表達式的位置,然後賦值
應該就是這個樣子。