1. 程式人生 > >初學者眼中的的Angularjs(三)

初學者眼中的的Angularjs(三)

八、服務

服務是一個物件或函式,對外提供特定的功能。
8.1內建服務
1、$location是對原生Javascript中location物件屬性和方法的封裝。
這裡寫圖片描述

2、timeout&interval對原生Javascript中的setTimeout和setInterval進行了封裝。

這裡寫圖片描述
3、$filter在控制器中格式化資料。

這裡寫圖片描述
4、$log列印除錯資訊
這裡寫圖片描述

5、$http用於向服務端發起非同步請求。
這裡寫圖片描述
同時還支援多種快捷方式如http.get()http.post()、$http.jsonp。
注:各引數含義見程式碼註釋。

8.2自定義服務
通過上面例子得知,所謂服務是將一些通用性的功能邏輯進行封裝方便使用,AngularJS允許將自定義服務。
1、factory方法
這裡寫圖片描述


2、service方法
這裡寫圖片描述

3、value方法定義常量
這裡寫圖片描述

在介紹服務時曾提到服務本質就是一個物件或函式,所以自定義服務就是要返回一個物件或函式以供使用。

九、模組載入

AngularJS模組可以在被載入和執行之前對其自身進行配置。我們可以在應用的載入階段配置不同的邏輯。
這裡寫圖片描述

9.1配置塊

1、通過config方法實現對模組的配置,AngularJS中的服務大部分都對應一個“provider”,用來執行與對應服務相同的功能或對其進行配置。
比如$log、$http、$location都是內建服務,相對應的“provider”分別是$logProvider、$httpProvider、$

locationPorvider。

下圖以$log為例進行演示,修改了配置
這裡寫圖片描述
下圖以$filter為例進行演示,實現相同功能
這裡寫圖片描述

9.2執行塊

服務也是模組形式存在的對且對外提供特定功能,前面學習中都是將服務做為依賴注入進去的,然後再進行呼叫,除了這種方式外我們也可以直接執行相應的服務模組,AngularJS提供了run方法來實現。
這裡寫圖片描述
不但如此,run方法還是最先執行的,利用這個特點我們可以將一些需要優先執行的功能通過run方法來執行,比如驗證使用者是否登入,未登入則不允許進行任何其它操作。

注:此知識點意在瞭解AngularJS的載入機制。

十、路由

一個應用是由若個檢視組合而成的,根據不同的業務邏輯展示給使用者不同的檢視,路由則是實現這一功能的關鍵。

10.1 SPA

SPA(Single Page
Application)指的是通單一頁面展示所有功能,通過Ajax動態獲取資料然後進行實時渲染,結合CSS3動畫模仿原生App互動,然後再進行打包(使用工具把Web應用包一個殼,這個殼本質上是瀏覽器)變成一個“原生”應用。

在PC端也有廣泛的應用,通常情況下使用Ajax非同步請求資料,然後實現內容區域性重新整理,區域性重新整理的本質是動態生成DOM,新生成的DOM元素並沒有真實存在於文件中,所以當再次重新整理頁面時新新增的DOM元素會“丟失”,通過單頁面應可以很好的解決這個問題。

10.2 路由

在後端開發中通過URL地址可以實現頁面(檢視)的切換,但是AngularJS是一個純前端MVC框架,在開發單頁面應用時,所有功能都在同一頁面完成,所以無需切換URL地址(即不允許產生跳轉),但Web應用中又經常通過連結(a標籤)來更新頁面(檢視),當點選連結時還要阻止其向伺服器發起請求,通過錨點(頁內跳轉)可以實現這一點。

實現單頁面應用需要具備:
a、只有一頁面
b、連結使用錨點

通過上面的例子發現在單一頁面中可以能過hashchange事件監聽到錨點的變化,進而可以實現為不同的錨點準不同的檢視,單頁面應用就是基於這一原理實現的。

AngularJS對這一實現原理進行了封裝,將錨點的變化封裝成路由(Route),這是與後端路由的根本區別。

在1.2版前路由功能是包含在AngularJS核心程式碼當中,之後的版本將路由功能獨立成一個模組,下載angular-route.js

10.2.1 使用
1、引入angular-route.js
這裡寫圖片描述
2、例項化模組(App)時,當成依賴傳進去(模組名稱叫ngRoute)。
這裡寫圖片描述
3、配置路由模組
這裡寫圖片描述
4、佈局模板
通過ng-view指令佈局模板,路由匹配的檢視會被載入渲染到些區域。
這裡寫圖片描述

10.2.1 路由引數

1、提供兩個方法匹配路由,分別是when和otherwise,when方法需要兩個引數,otherwise方法做為when方法的補充只需要一個引數,其中when方法可以被多次呼叫。
2、第1個引數是一個字串,代表當前URL中的hash值。
3、第2個引數是一個物件,配置當前路由的引數,如檢視、控制器等。

a、template 字串形式的檢視模板
b、templateUrl 引入外部檢視模板
c、controller 檢視模板所屬的控制器
d、redirectTo跳轉到其它路由

4、獲取引數,在控制中注入$routeParams可以獲取傳遞的引數
這裡寫圖片描述
這裡寫圖片描述

十一、其它

11.1 jQuery

在沒有引入jQuery的前提下AngularJS實現了簡版的jQuery
Lite,通過angular.element不能選擇元素,但可以將一個DOM元素轉成jQuery物件,如果引提前引入了jQuery則angular.element則完全等於jQuery。

11.2 bower

基於NodeJS的一個靜態資源管理工具,由twitter公司開發維,解決大型網站中靜態資源的依賴問題。 npm node package
manager 1、依賴NodeJS環境和git工具。 2、npm install -g bower安裝bower 3、bower
search 查詢資源資訊 4、bower install 安裝(下載)資源,通過#號可以指定版本號 5、bower info
檢視資源資訊 6、bower uninstall 解除安裝(刪除)資源

相關推薦

初學者眼中的的Angularjs

八、服務 服務是一個物件或函式,對外提供特定的功能。 8.1內建服務 1、$location是對原生Javascript中location物件屬性和方法的封裝。 2、timeout&interval對原生Javascript中的setTime

初學者眼中的的Angularjs

一、介紹 AngularJS是一款由Google公司開發維護的前端MVC框架,其克服了HTML在構建應用上的諸多不足,從而降低了開發成本提升了開發效率。 1.1 特點 AngularJS與我們之前學習的jQuery是有一定的區別的,jQuery更準確

初學者眼中的的Angularjs

四、資料繫結 AngularJS是以資料做為驅動的MVC框架,所有模型(Model)裡的資料經由控制器(Controller)展示到檢視(View)中。 所謂資料繫結指的就是將模型(Model)中的資料與相應的檢視(View)進行關聯,分為單向繫結

初探AngularJs框架

實現 處理 註意 雙向 需要 簡單 混淆 邏輯 ice 一、實現todoList的demo 功能很簡單,提供一個文本框,用戶輸入回車後添加新條目。每個條目可以在待處理和處理中兩個區域間切換,每個條目都可以被刪除,大致的界面如下圖所示: 二、處理邏輯 首

angularjs和ajax的結合使用

ESS 靈活運用 告訴 公司 紅色 success body 說了 spa 轉眼九月份了,忙忙碌碌 發現今年還沒開過張,寫一篇吧。 15年在空閑時就倒騰過angularjs那玩意兒 ,覺得還是挺好的,李金龍那厚厚的一本書,只不過沒有系統化應用。最主要的是原來有一個東西沒有

AngularJS學習——服務

服務——一個函式或物件,可以對外提供某種特定功能。可以在Angular應用中使用 內建服務: (一)$location返回當前頁面的url 用‘http://localhost/$location/21.2%$location.html#/foo?name=buun

AngularJS路由之ui-router

一、為ui-router新增進度條 在使用動態控制器或者ajax,新增資料的時候需要進度條提示, 我們可以使用路由狀態的事件新增全域性進度條提示 $stateChangeStart: 當狀態開始改變時觸發 $stateChangeSuccess: 當狀態改變結束時觸發 二

TensorFlow初學者入門——MNIST進階

本人學習TensorFlow中的一些學習筆記和感悟,僅供學習參考,有疑問的地方可以一起交流討論,持續更新中。 本文學習地址為:TensorFlow官方文件,在此基礎上加入了自己的學習筆記和理解。 文章是建立在有一定的深度學習基礎之上的,建議有一定理論基礎之後再同步學習。 這次是利用Ten

Latex初學者入門-- 用BibTeX生成參考文獻

昨boss要往期Elsevier 刊投文章,距上次排版貌似過了好久,生疏了不少,翻出以前的寫的一些筆記再複習複習。     不過這次好多了,僅僅是改個格式,原始的文章已經用latex編寫過了(個人感覺最頭疼的就是表格,特別是各種巢狀,真是。。。) 直接在官網上找了半天沒有

【Unity3D基礎教程】給初學者看的Unity教程:通過製作Flappy Bird瞭解Native 2D中的Sprite,Animation

引子 上一次我們講了MonoBehaviour的前世今生,瞭解了遊戲中的每一個GameObjec都是由指令碼控制的,這一次我們開始將Unity中Native 2D中的Sprite,並且使用Animation來讓Sprite動起來。 在接下來的幾篇部落格裡,我會通過做一個Flappy Bird來講解

眼中的設計模式

各種模式之間都有一定的聯絡,以面向物件為基礎,運用類的概念設計模式,充分體現封裝、繼承和多型的特性。 另外幾種設計模式這裡不一一介紹了,今天這篇部落格談一下設計模式的分類: 一、    建立型模式:

如何自學程式設計-初學者應該知道的一些事

  在前兩篇文章,我從初學者的角度給同學們分享了程式開發的一個基礎概念,並做了一些簡單的敘述,如果你還沒有閱讀前面兩篇文章,你可以開啟以下連結進行閱讀: 1.如何自學程式設計? 2.如何自學程式設計(二)-該如何選擇入門語言?   在這篇文章,我將繼續給初學程

Maven + Spring MVC+Mybatis + MySQL +AngularJS + Bootstrap 實現簡單微博應用前後臺互動

上一節http://blog.csdn.net/shymi1991/article/details/51985371 該章節實現實現使用者註冊、登入、發表微博、評論微博等功能。 1. 配置檔案 spring-mvc.xml <?xml version="1.0" e

AngularJS學習

一、過濾器(filter) 1、angular本身定義了許多的過濾器,如: 1>filter 將指定資料進行過濾,只要任意的屬性中含有過濾的資料中的部分,就將進行過濾: <script> var app=an

Python 接口測試

3.4 control .html .get agent gif gin version tps 四:python接口之http請求 python的強大之處在於提供了很多的標準庫以及第三庫,本文介紹urllib 和第三庫的requests。 Urllib 定義了很多函數和類

Java多線程編程模式實戰指南:Two-phase Termination模式

增加 row throws mgr 額外 finally join table 還需 停止線程是一個目標簡單而實現卻不那麽簡單的任務。首先,Java沒有提供直接的API用於停止線程。此外,停止線程時還有一些額外的細節需要考慮,如待停止的線程處於阻塞(等待鎖)或者等待狀態(等

在Windows Server 2008 R2下搭建jsp環境-Tomcat的下載安裝

流行 ext 協議 解壓縮 需要 繼續 bsp shutdown 電腦系統 1.百度搜索“Tomcat官網”,點擊有標誌的官網進入,準備下載官方正版Tomcat。 2.進入Tomcat官網之後,在左邊我們看到,Tomcat的有6,7,8這三個最流行的版本,我們可以點

日本程序開發式自定義的malloc/free函數-源代碼ソースコード

size span 鏈表 pan ppp 附近 efi ret system 這篇文章終於是貼出了我們的源代碼,實現每個功能也是花費了許多時間,大家在編寫的時候可以多花點時間,多嘗試,多看就能寫出來。 老師的要求不能在程序裏面使用malloc,new什麽的,有要求使用鏈表,

Dubbo -- 多協議支持

cached list 大並發 服務器 服務提供者 小數 效率 blog 詳細 一、Dubbo支持的協議   Dubbo協議、Hessian協議、HTTP協議、RMI協議、WebService協議、Thrift協議、Memcached協議、Redis協議 二、協議簡介

軟考

技術 完全 我們 簡化 步驟 net Coding 能夠 details http://blog.csdn.net/coding1994/article/details/52474731 一 了解進程資源圖 Markdown編輯器用的還不是太熟,表格中插入圖片這事還沒學會