AngularJs基本特性解析(一)_AngularJS

來源:互聯網
上載者:User

現在的前端項目中基本上都會用到angularjs架構,之前並不瞭解這個架構,也是因為最近接手的項目,所以打算好好的學習下它。之前都是搞pc端,現在接手的是移動端的項目,移動端UI架構用的是ionic+vordova,沒有用bootstrap,主要做的是ios+安卓的app介面,ionic這個架構也不太瞭解,也需要花時間好好熟悉下。angularjs學習小白一枚,歡迎大神指正。

AngularJs是什嗎?

簡單來說,即javascript的一個架構,通過script標籤添加到網頁中。即我們使用angularjs時,需要引入下面的代碼。

<script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>

通常建議把指令碼放在<body>元素的底部,作用是:提高網頁載入速度。因為html載入不受制於指令碼載入。

AngularJs的作用?

AngularJS 使得開發現代的單一頁面應用程式(SPAs:Single Page Applications)變得更加容易。
•AngularJS 把應用程式資料綁定到 HTML 元素。
•AngularJS 可以複製和重複 HTML 元素。
•AngularJS 可以隱藏和顯示 HTML 元素。
•AngularJS 可以在 HTML 元素"背後"添加代碼。
•AngularJS 支援輸入驗證。

像現在移動端基本上使用單頁面的比較,就是利用angular的路由轉換進行的。像我們現在這個項目也是使用的單頁面。即在首頁面裡面,即跳轉的頁面都在首頁面裡面進行。截圖如下:

 

AngularJs運算式

AngularJS 運算式寫在雙大括弧內:{{ expression }}。

AngularJS 運算式把資料繫結到 HTML,這與 ng-bind 指令有異曲同工之妙。

AngularJS 將在運算式書寫的位置"輸出"資料。

AngularJS 運算式 很像 JavaScript 運算式:它們可以包含文字、運算子和變數。

<!doctype html><!-- 標記angularjs處理整個html頁並引導應用 --><html ng-app> <head><meta charset="utf-8"><script src="http://code.angularjs.org/angular-1.0.1.min.js"></script></head><body><p>name:{{"ting"+"feng"}}</p><p>number:{{5+5}}</p><div ng-init="person={name:'tingfeng',age:'13'}"><p>name:{{person.name}} age:{{person.age}}</p></div></body></html>

AngularJs在html中的應用

主要通過ng-directive擴充html,angularjs指令是以ng作為首碼的html屬性,包含有四大特性:mvc,模組化,指令系統(directive),databinding

ng-init:該指令初始化angularjs應用程式變數。比如下面的列子:

<!doctype html><!-- 標記angularjs處理整個html頁並引導應用 --><html ng-app> <head><meta charset="utf-8"><script src="http://code.angularjs.org/angular-1.0.1.min.js"></script></head><body><div ng-init="name='tingfeng'"><p>name is:<span ng-bind="name"></span></p></div></body></html>

ng-app:該指令表示定義一個angularjs應用程式。通常放在html後面,也可以在局部使用ng-app指令,比如<div ng-app>則angularjs指令碼僅在該div中運行,即表明從此處開始,所有內容均為angularjs進行管理。

ng-model:該指令是指把元素值(比如輸入框的值)綁定到應用程式中。

ng-bind:該指令是把應用程式資料綁定到html視圖中。使用相應的指令,即可利用angularjs操作html頁面。具體怎麼使用,我們來看看代碼。

此時利用ng-model綁定到setname模型變數上,當在輸入框中輸入值時,相應的setname也會變化。可自行貼碼測試。

關於$scope解釋

$scope是什嗎?有什麼作用?如何使用它?

簡單來說,scope是一個pojo(plainoldjavascriptobject),類似於一個對象,有屬性和方法, scope是一個pojo(plainoldjavascriptobject),類似於一個對象,有屬性和方法,scope提供了watch()和 watch()和apply()工具方法。angularjs的mvc全部藉助於$scope進行的。

特性:1.是運算式的執行環境(或者範圍)

2.scope是一個樹型結構,與dom標籤平行,其上含有一個 scope是一個樹型結構,與dom標籤平行,其上含有一個rootscope處於最頂層。

3.scope會繼承父 scope會繼承父rootscope的屬性和方法。

4.$scope可以傳播事件,類似於dom,可以向上傳播也可以向下。

5.$scope不僅是mvc的基礎,也是後面實現雙向繫結的基礎。

AngularJs的組成部分

模板:即編寫的html和css的檔案,展現應用的視圖。angularjs可以在html中構建自己的html標記!
控制器:與ajax不同,不需要另外編寫接聽程式或dom控制器,因為它已經內建到angularjs中。 好處:便於編寫,測試,維護和理解。

模型資料:模型是從angularjs做用域對象的屬性引申的。模型的資料可能是js對象,數組或基本類型,但都屬於angularjs範圍對象。

如何理解angularjs中的範圍?

即一個範圍可以視作模板,模型和控制器協同工作的粘接器,angularjs使用範圍,同時還有模板中的資訊,資料模型和控制器。這些可以協助模型和視圖分離,但他們兩者確即時同步的!任何對於模型的更改都會即時反映到視圖上,任何視圖的更改都會被立刻體現在模型中。

視圖:在angularjs中,一個視圖是模型通過html模板渲染之後的映射。即不論模型什麼時候發生變化,angularjs會即時更新結合點,隨之更新視圖。

還是貼碼來看,更加直觀!

<!doctype html><html ng-app="HelloAngular"> <head><meta charset="utf-8"><script src="http://code.angularjs.org/angular-1.0.1.min.js"></script><script>//模組化var myModule = angular.module("HelloAngular", []); --控制模板HelloAngularmyModule.controller("helloAngular", ['$scope',function HelloAngular($scope) {$scope.value = {name: 'jiangting'};}]); </script></head><body><!-- mvc看angular--><div ng-controller="helloAngular"> --控制器為helloAngular<p>{{value.name}},hello!</p></div><!-- angular 模組化 --> </body></html>

我們來看看controller的應用,即控制器,即控制器通過操作資料,將其進行綁定,展現在html頁面上。

AngularJS 模組(Module) 定義了 AngularJS 應用。

AngularJS 控制器(Controller) 用於控制 AngularJS 應用。

ng-app指令定義了應用, ng-controller 定義了控制器。我們用上面的列子來看:

AngularJS模組定義應用:

var myModule = angular.module("HelloAngular", []); --控制模板HelloAngular

angularjs控制器控制應用:

myModule.controller("helloAngular", ['$scope',function HelloAngular($scope) {$scope.value = {name: 'jiangting'};}]);

瞭解前端mvc

關於controller特性:

1.不要試圖去服用controller,一個控制器一般只負責一個小塊視圖

2.不要直接在controller中操作dom,這不是其職責

3.不要在controller裡面做資料過濾的操作,ng有filter服務

4.不要在controller裡面做資料格式化,ng有很好用的表單控制項

5.controller是不會互相調用,控制器之間的互動會通過事件進行,通過 filter服務4.不要在controller裡面做資料格式化,ng有很好用的表單控制項5.controller是不會互相調用,控制器之間的互動會通過事件進行,通過scope進行調用

下面看下如何自訂指令系統,代碼如下:

<!doctype html><html ng-app><head><meta charset="utf-8"><script src="http://code.angularjs.org/angular-1.0.1.min.js"></script><script>//指令系統var myModule = angular.module("MyModule", []);myModule.directive("hello", function() {return {restrict: 'E',template: '<div>Hi everyone!</div>', --這裡我們插入一段html標籤replace: true}});</script></head><body> <hello></hello></body></html>

directive中,後面返回有三個參數,其中template中指所插入的html標籤。現在我門自己來寫一段html代碼,看看如何將其變為angularjs的寫法。

原靜態html代碼如下:

<ul><li><span>new1</span><p>just a test page1</p></li><li><span>new2</span><p>just a test page2</p></li> </ul>

將其改版為angularjs的寫法如下:

<!doctype html><html ng-app><head><meta charset="utf-8"><script src="http://code.angularjs.org/angular-1.0.1.min.js"></script><script>//$scope為控制器的範圍,//angularjs範圍:可以視作模板,當應用啟動之後,會有一個根範圍被建立出來,而控制器的範圍是根範圍的一個典型後繼。function newsCtrl($scope){$scope.news=[{"content":"new1","introduce":"just a test page1"},{"content":"new2","introduce":"just a test page2"}];$scope.phones={length:"4" // 單個的屬性不能加分號,多個屬性用逗號分隔};}</script></head><body ng-controller="newsCtrl"><ul><li ng-repeat="new in news">{{new.content}}<p>{{new.introduce}}</p></li></ul> </body></html> 

以上所述是小編給大家介紹的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.