亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

AngularJs 60分鐘入門基礎教程

2019-11-20 10:18:01
字體:
來源:轉載
供稿:網友

AngularJs是一個不錯的用于開發SPA應用(單頁Web應用)的框架。單頁Web應用(single page web application,SPA),就是只有一張Web頁面的應用。瀏覽器一開始會加載必需的HTML、CSS和JavaScript,所有的操作都在這張頁面上完成,由JavaScript來控制不同view在這個頁面上的呈現。本文源于Youtube上一個不錯的AngularJs的入門教程視頻:AngularJS Fundamentals In 60-ish Minutes,主要講解了AngularJs中Directive,Data Binding,Filter和Module的概念和用法。個人認為這四個概念是AngularJs的核心,支撐起了AngularJs的骨架。掌握了他們對全局上把握AngularJs很有幫助。進階則需要大量實踐和官網API文檔的閱讀。

看看下圖大致就可以了解AngularJs有何能耐。


首先從官網下載angular.min.js和angular-route.min.js。 可以從官網下載(https://angularjs.org/或https://code.angularjs.org/)

在VS中創建一個空的Empty Web項目。


Directive 和 Data Binding

AngularJs 中的Directive概念不是很容易理解,入門階段可暫且將其理解為用來擴展HTML的一種tag. Angularjs會解析這些tag,以實現Angularjs的Magic.
下面代碼使用了兩個Directive:ng-app 和 ng-model.

ng-app: 用于auto-bootstrap 一個AngularJs應用。這是必須的一個Directive,一般加在HTML的根對象上(如下代碼所示)。更詳細解釋,移步官網:https://docs.angularjs.org/api/ng/directive/ngApp

ngModel: 用于在property和HTML控件(input,select, textarea)之間建立雙向的Data Binding,也就是說HTML控件的值改變會反應到property上,反過來也同樣成立。property就是通過{{}}創建的一個對象。

下面代碼展示了將文本控件和name之間建立了Data Binding.

<!DOCTYPE html><html ng-app><head><title>Using Directives and Data Binding Syntax</title></head><body><div class="container">Name: <input type="text" ng-model="name" /> {{name}}</div><script src="angular.min.js"></script></body></html>

Directive可以用“x-”或者“data-”作為前綴。Directive可以放置于元素名、屬性、class、注釋中。

<!DOCTYPE html><html data-ng-app=""><head><title>Using Directives and Data Binding Syntax</title></head><body><div class="container">Name: <input type="text" data-ng-model="name" /> {{name}}</div><script src="angular.min.js"></script></body></html>

下面是HTML運行以后的結果。

下面例子展示了通過ng-init和ng-repeat來遍歷操作一個數組的用法。

<!DOCTYPE html><html data-ng-app=""><head><title>Iterating with the ng-repeat Directive</title></head><body><div class="container" data-ng-init="names = ['Terry','William','Robert','Henry']"><h3>Looping with the ng-repeat Directive</h3><ul><li data-ng-repeat="name in names">{{name}}</li></ul></div><script src="angular.min.js"></script></body></html>

更多directve的用法,參考官網https://docs.angularjs.org/api

Filter

作用就是接收一個輸入,通過某個規則進行處理,然后返回處理后的結果。主要用于對數組過濾,對數組中的元素進行排序, 對數據做格式化處理等。

AngualrJS內置了一些過濾器,它們是:currency(貨幣)、date(日期)、filter(子串匹配)、json(格式化json對象)、limitTo(限制個數)、lowercase(小寫)、uppercase(大寫)、number(數字)、orderBy(排序)??偣簿欧N。除此之外還可以自定義過濾器,這個就強大了,可以滿足任何要求的數據處理。

下面代碼展示了數據過濾,排序和大小寫轉換的實現。每個Filter跟在數據后,并有|隔開。

<!DOCTYPE html><html data-ng-app=""><head><title>Using Filter</title></head><body><div class="container" data-ng-init="customers = [{name:'Terry Wu',city:'Phoenix'},{name:'Terry Song',city:'NewYork'},{name:'Terry Dow',city:'NewYork'},{name:'Henry Dow',city:'NewYork'}]">Names:<br /><input type="text" data-ng-model="name" /><br /><ul><li data-ng-repeat="cust in customers | filter:name | orderBy:'city'">{{cust.name | uppercase}} - {{cust.city | lowercase}}</li></ul></div><script src="angular.min.js"></script></body></html>

運行的結果:


Module

Module就是一個容器,用于管理一個AngularJS應用的各個部分,是AngularJS中很重要的概念。一個AngularJS應用就是一個Module,其作用和C#應用程序中Assembly作用類似。C#中我們通過main函數來bootstrap應用程序。而AngularJS則通過na-app="moduleName"的方式來bootstrap一個AngularJS應用。moduleName就是Module對象的name.

下圖是一個Module有哪些常見部分組成。

Config/Route:用于配置AngularJS應用的路由(AngularJS),作用類似于ASP.NET MVC應用中的Config/Route。
Filter:對數據起過濾作用,上文有解釋。

Directive: 擴展HTML,AngularJS中最重要的概念。沒有Directive就沒有AngularJS。

Controller: 作用類似于ASP.NET MVC應用中的Controller。頁面邏輯就在Controller中實現,通過controller可以對model進行操作。 AngularJS則通過內建的Data-Binding機制將model綁定到view(HTML控件)

Factory/Service/Provider/Value: 提供對數據源的訪問。比如Restful API就是常見的數據源。 Controller通過Factory/Service/Provider/Value訪問數據源完成數據的CRUD操作。

下面這段代碼實現了上面實例的相同的功能,差異就在于這個實例通過創建一個module(angularJS應用),并在module下添加contorller來實現上面的功能。在SimpleController(Controller)中,我們創建了customers(Model)并進行數據初始化, View(Html控件)則直接綁定到customers(Model)。Scope是一個AngualrJS中所有viewModule的容器對象。Controller需要通過Scope是一個AngualrJS中所有viewModule的容器對象。Controller需要通過Scope來訪問viewModule。

這個例子比上面例子更接近實際工程中的用法。

<!DOCTYPE html><html data-ng-app="demoApp"><head><title>Using module Controller</title></head><body><div data-ng-controller="SimpleController">Names:<br /><input type="text" data-ng-model="name" /><br /><ul><li data-ng-repeat="cust in customers | filter:name | orderBy:'city'">{{cust.name | uppercase}} - {{cust.city | lowercase}}</li></ul></div><script src="angular.min.js"></script><script>var demoApp = angular.module("demoApp", []);demoApp.controller("SimpleController", function ($scope) {$scope.customers = [{ name: 'Terry Wu', city: 'Phoenix' },{ name: 'Terry Song', city: 'NewYork' },{ name: 'Terry Dow', city: 'NewYork' },{ name: 'Henry Dow', city: 'NewYork' }];});</script></body></html><!DOCTYPE html><html data-ng-app="demoApp"><head><title>Using Controller</title></head><body><div data-ng-controller="SimpleController">Names:<br /><input type="text" data-ng-model="name" /><br /><ul><li data-ng-repeat="cust in customers | filter:name | orderBy:'city'">{{cust.name | uppercase}} - {{cust.city | lowercase}}</li></ul></div><script src="angular.min.js"></script><script>var demoApp = angular.module("demoApp", []);var controllers = {};controllers.SimpleController = function ($scope) {$scope.customers = [{ name: 'Terry Wu', city: 'Phoenix' },{ name: 'Terry Song', city: 'NewYork' },{ name: 'Terry Dow', city: 'NewYork' },{ name: 'Henry Dow', city: 'NewYork' }];}demoApp.controller(controllers);</script></body></html><!DOCTYPE html><html data-ng-app="demoApp"><head><title>Using Controller</title></head><body><div><div data-ng-view=""></div></div><script src="angular.min.js"></script><script src="angular-route.min.js"></script><script>var demoApp = angular.module('demoApp', ['ngRoute']);demoApp.config(function ($routeProvider) {$routeProvider.when('/',{controller: 'SimpleController',templateUrl: 'Partials/View1.html'}).when('/view2',{controller: 'SimpleController',templateUrl: 'Partials/View2.html'}).otherwise({redirectTo:'/'});});var controllers = {};controllers.SimpleController = function ($scope) {$scope.customers = [{ name: 'Terry Wu', city: 'Phoenix' },{ name: 'Terry Song', city: 'NewYork' },{ name: 'Terry Dow', city: 'NewYork' },{ name: 'Henry Dow', city: 'NewYork' }];$scope.addCustomer = function () {$scope.customers.push({ name: $scope.newCustomer.name, city: $scope.newCustomer.city });};}demoApp.controller(controllers);</script></body></html>

下圖展示了Module及其各個組成部分的關系。

下面實例通過config配置module的route實現一個SPA實例。首先創建View1.html 和View2.html。 目錄結構如下圖.

<div><h2>View1</h2>Names:<br /><input type="text" data-ng-model="filter.name" /><br /><ul><li data-ng-repeat="cust in customers | filter:filter.name | orderBy:'city'">{{cust.name | uppercase}} - {{cust.city | lowercase}}</li></ul><br />Customer Names:<br /><input type="text" data-ng-model="newCustomer.name" /><br />Customer City:<br /><input type="text" data-ng-model="newCustomer.city" /><br /><button data-ng-click="addCustomer()">Add Customer </button><br /><a href="#/view2">View 2</a></div><div><h2>View2</h2>City:<br /><input type="text" data-ng-model="city" /><br /><ul><li data-ng-repeat="cust in customers | filter:city | orderBy:'city'">{{cust.name | uppercase}} - {{cust.city | lowercase}}</li></ul></div>

通過$routeProvider來配置當前頁面中view1 和view2 的路由,已經每個view所對應的controller。 view1和view2會顯示在當前頁面標注了ng-view的位置。

同時通過config我們解耦了controller和HTML標簽。 上面的例子,我們需要給html標簽添加ng-controller tag來使用controller。這邊直接通過config完成這樣的配置。

<!DOCTYPE html><html data-ng-app="demoApp"><head><title>View</title></head><body><div><div data-ng-view=""></div></div><script src="angular.min.js"></script><script src="angular-route.min.js"></script><script>var demoApp = angular.module('demoApp', ['ngRoute']);demoApp.config(function ($routeProvider) {$routeProvider.when('/',{controller: 'SimpleController',templateUrl: 'Partials/View1.html'}).when('/view2',{controller: 'SimpleController',templateUrl: 'Partials/View2.html'}).otherwise({redirectTo:'/'});});var controllers = {};controllers.SimpleController = function ($scope) {$scope.customers = [{ name: 'Terry Wu', city: 'Phoenix' },{ name: 'Terry Song', city: 'NewYork' },{ name: 'Terry Dow', city: 'NewYork' },{ name: 'Henry Dow', city: 'NewYork' }];$scope.addCustomer = function () {$scope.customers.push({ name: $scope.newCustomer.name, city: $scope.newCustomer.city });};}demoApp.controller(controllers);</script></body></html>

效果如下圖。

最后一個實例更接近實際工程中的用法,我們引入了Factory來初始化數據(實際工程中,在這里可訪問webAPI獲取數據完成初始化),Controller中則通過Factory獲得數據。

<!DOCTYPE html><html data-ng-app="demoApp"><head><title>Using Factory</title></head><body><div><div data-ng-view=""></div></div><script src="angular.min.js"></script><script src="angular-route.min.js"></script><script>var demoApp = angular.module('demoApp', ['ngRoute']);demoApp.config(function ($routeProvider) {$routeProvider.when('/',{controller: 'SimpleController',templateUrl: 'Partials/View1.html'}).when('/view2',{controller: 'SimpleController',templateUrl: 'Partials/View2.html'}).otherwise({ redirectTo: '/' });});demoApp.factory('simpleFactory', function () {var customers = [{ name: 'Terry Wu', city: 'Phoenix' },{ name: 'Terry Song', city: 'NewYork' },{ name: 'Terry Dow', city: 'NewYork' },{ name: 'Henry Dow', city: 'NewYork' }];var factory = {};factory.getCustomers = function (){return customers;}return factory;});var controllers = {};controllers.SimpleController = function ($scope, simpleFactory) {$scope.customers = [];init();function init() {$scope.customers = simpleFactory.getCustomers();}$scope.addCustomer = function () {$scope.customers.push({ name: $scope.newCustomer.name, city: $scope.newCustomer.city });};}demoApp.controller(controllers);</script></body></html>

以上內容是小編給大家介紹的AngularJs 60分鐘入門基礎教程,希望對大家以上幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青在线视频一区二区三区| 亚洲第一福利网| 国产综合在线视频| 8x海外华人永久免费日韩内陆视频| 欧美精品videosex性欧美| 久久久久久久久久久人体| 午夜美女久久久久爽久久| 国产精品一二区| 久久影院中文字幕| 日韩视频一区在线| 亚洲精品99久久久久| 色综合亚洲精品激情狠狠| 欧美亚洲国产日韩2020| 久久精品小视频| 欧美做受高潮电影o| 欧美激情在线观看视频| 亚洲第一福利在线观看| 欧美成年人网站| 国产精品吴梦梦| 欧美日韩美女在线| 亲爱的老师9免费观看全集电视剧| 富二代精品短视频| 日产精品99久久久久久| 精品久久国产精品| 国产精品爽爽ⅴa在线观看| 亚洲午夜性刺激影院| 国产在线98福利播放视频| 国产一区二区香蕉| 日本精品久久电影| 韩国国内大量揄拍精品视频| 日韩在线播放一区| 国产一区二区激情| 久久精品一偷一偷国产| 亚洲欧美日韩精品久久| 色伦专区97中文字幕| 日韩在线播放一区| 欧美老妇交乱视频| 成人精品久久久| 久久这里有精品| 欧美大尺度激情区在线播放| 亚洲人成在线免费观看| 成人激情视频在线观看| 精品一区二区亚洲| 欧美激情高清视频| 欧美大片欧美激情性色a∨久久| 亚洲人成电影网站色www| 黄色一区二区在线| 国产精品永久免费在线| 亚洲女人天堂视频| 精品久久久国产精品999| 尤物yw午夜国产精品视频明星| 成人午夜小视频| 亚洲性猛交xxxxwww| 亚洲欧美国内爽妇网| 欧美精品性视频| 亚洲无亚洲人成网站77777| 九色精品美女在线| 亚洲精品中文字幕有码专区| 欧美中文在线观看国产| 欧美日韩在线观看视频| 国产在线高清精品| 国产成人精彩在线视频九色| 26uuu另类亚洲欧美日本老年| 亚洲精品国产suv| 精品偷拍一区二区三区在线看| 日韩av第一页| 国产日韩欧美影视| 久久久之久亚州精品露出| 久久久精品久久久| 日韩精品免费综合视频在线播放| 国产精品免费视频久久久| 久久久久99精品久久久久| 亚洲色图国产精品| 国产精品久久久久久久久久99| 亚洲国产精品久久久久秋霞不卡| 5278欧美一区二区三区| 中文字幕日韩av电影| 亚洲一区中文字幕| 国产精品亚洲片夜色在线| 欧美天天综合色影久久精品| 国产精品久久久久久久av大片| 亚洲自拍在线观看| 欧美在线视频观看| 国产精品旅馆在线| 欧美三级xxx| 国产精品美女主播在线观看纯欲| 国产欧美日韩中文字幕在线| 欧美黑人又粗大| 97视频免费在线观看| 国产日韩在线亚洲字幕中文| 91免费高清视频| 欧美日韩国产中字| 欧美日韩国产va另类| 欧美日韩在线一区| 国产一区二区三区精品久久久| 亚洲在线免费视频| 久久视频精品在线| 欧美精品免费看| 国产精品视频精品视频| 久久在线免费观看视频| 精品国偷自产在线视频99| 国产精品99久久久久久久久久久久| 欧美俄罗斯乱妇| 国产视频久久久| 久久综合久久88| 日韩麻豆第一页| 欧美日韩福利在线观看| 亚洲精品一区久久久久久| 日本午夜精品理论片a级appf发布| 国色天香2019中文字幕在线观看| 亚洲人成电影在线观看天堂色| 欧美激情中文字幕乱码免费| 欧美黄色免费网站| 综合国产在线观看| 26uuu日韩精品一区二区| 91久久国产婷婷一区二区| 国产a∨精品一区二区三区不卡| 亚洲国产日韩精品在线| zzijzzij亚洲日本成熟少妇| 成人激情在线观看| 国产一区二区三区在线| 91免费版网站入口| 91久久久久久久久| 日本三级久久久| 日本久久久久亚洲中字幕| 国产香蕉精品视频一区二区三区| 成人午夜在线影院| 亚洲精品综合精品自拍| 欧美有码在线视频| 日本精品久久久| 大桥未久av一区二区三区| 国产精品欧美亚洲777777| 亚洲第一视频网站| 精品日韩中文字幕| 精品国产一区二区三区久久久狼| 国产成人福利夜色影视| 欧美激情国产精品| 久久青草福利网站| 国产精品69av| 亚洲精品免费一区二区三区| 国产精品27p| 青青青国产精品一区二区| 亚洲精品一区久久久久久| 国产亚洲成av人片在线观看桃| 欧美性高跟鞋xxxxhd| 精品美女永久免费视频| 色妞在线综合亚洲欧美| 亚洲视频免费一区| 精品中文视频在线| 成人免费直播live| 久久国产精品网站| 欧美视频中文字幕在线| 91九色视频在线| 欧美精品在线第一页| 亚洲精品久久久久久久久| 欧美黄网免费在线观看| 91av在线看| 久久精品男人天堂| 日韩av电影免费观看高清| 欧美日韩在线视频一区二区| 亚洲黄页视频免费观看| 欧美老肥婆性猛交视频| 久久综合伊人77777| 国产成+人+综合+亚洲欧美丁香花|