序 1
第 1 章 Angular之禪 7
11 邂逅AngularJS 7
熟悉框架 8
參與AngularJS項目 8
社區 8
在綫學習資源 9
庫和擴展 9
工具 9
Batarang 10
Plunker與jsFiddle 10
IDE擴展和插件 10
12 AngularJS速成 10
Hello World——AngularJS 示例 10
雙嚮數據綁定 12
AngularJS中的MVC 模式 12
鳥瞰 13
深入作用域 15
視圖 21
模塊與依賴注入 26
模塊 26
協作對象 27
注冊服務 29
模塊的生命周期 33
模塊依賴 35
13 AngularJS和其他框架 38
jQuery 與 AngularJS 39
蘋果與橙子 40
窺視未來 41
14 總結 41
第 2 章 構建與測試 43
21 介紹示例應用 44
熟悉問題領域 44
技術棧 45
持久化存儲 46
MongoLab 46
服務器端環境 47
第三方JavaScript庫 48
Bootstrap CSS 48
22 構建係統 48
構建係統準則 49
自動化所有事情 49
盡早報錯,清晰報錯 49
不同的工作流,不同的命令 50
構建腳本同樣是代碼 50
工具 50
Gruntjs 51
測試庫與工具 51
Jasmine 51
Karma runner 52
23 組織文件和目錄 52
根目錄 52
進入源代碼目錄 54
AngularJS的特定文件 54
輕裝上路 56
深入測試目錄 57
文件命名約定 57
24 AngularJS模塊和文件 57
一個文件,一個模塊 58
模塊內部 59
注冊provider的不同語法 59
聲明配置和運行塊的語法61
25 自動化測試 62
單元測試 63
剖析Jasmine測試 64
測試AngularJS對象 65
測試服務 65
測試控製器 67
Mock對象和異步代碼測試 68
端對端測試 70
日常工作流 71
Karma runner的提示與技巧 72
執行測試子集 73
調試 73
26 小結 74
第 3章 與後端服務器通信 75
31 使用 $http 進行 XHR和JSONP 請求 75
熟悉數據模型和MongoLab URLs 76
$http API快速導覽 76
配置對象說明 77
轉換請求數據 78
處理HTTP響應 79
轉換響應數據 79
處理同源政策約束 79
利用JSONP剋服同源政策約束 80
JSONP的限製 81
利用CORS剋服同源政策約束 81
服務器端代理 83
32 promise API 與$q84
工作中的promise 和$q服務 85
學習$q服務的基礎知識 85
promise是第一類JavaScript對象 87
聚閤迴調 88
注冊迴調和承諾的生命周期 88
異步動作的鏈式調用 89
關於$q的其他 91
AngularJS中的$q集成 93
33 promise API與 $http 94
34 與 RESTful 端點通信 95
$resource服務 95
構造級與實例級方法 97
$resource 創建異步方法 100
$resource服務的限製 101
使用$http 自定義 REST 適配器 101
35 使用$http 的高級特性 104
截取響應 104
36 測試與 $http 交互的代碼 106
37 小結 108
第 4 章 顯示與格式化數據 109
41 引用指令 109
42 顯示錶達式的求值結果 110
插值指令 110
利用ngBind渲染模型值 111
AngularJS錶達式中的 HTML內容 111
43 條件化顯示 112
根據條件包含內容塊 114
44 用 ngRepeat 指令渲染集閤 114
熟悉ngRepeat 指令 115
特殊變量 115
迭代對象的屬性 116
ngRepeat 模式 117
列錶和細節 117
改動錶格、行和類 119
45 DOM 事件處理器 120
46 基於DOM 的模闆 121
習慣煩瑣的語法 121
ngRepeat 和多個DOM 元素 122
不能在運行時修改的元素和屬性 123
自定義HTML元素與 IE 的老版本 124
47 使用過濾器處理模型變換 124
內置過濾器 125
格式化過濾器 125
數組變換過濾器 125
編寫自定義過濾器——分頁示例 131
從JavaScript代碼中訪問過濾器 133
過濾器做什麼與不做什麼 134
過濾器與DOM操作 135
過濾器中代價高昂的數據變換 136
不穩定的過濾器 136
48 摘要 138
第5章 創建高級錶單 139
51 AngularJS錶單與傳統錶單的比較 139
介紹ngModel 指令 141
52 創建用戶信息錶單 142
53 理解輸入指令 143
添加所需驗證 143
使用基於文本的輸入(text、textarea、e-mail、URL、number) 143
使用checkbox 輸入 144
使用radio 輸入 145
使用select 輸入 145
提供簡單的字符串options 145
利用ngOptions指令提供動態options 146
select指令與空的options 148
理解select和對象判等 149
選擇多個options 150
運用傳統的HTML hidden input 字段 150
嵌入來自服務器的值 150
提交傳統的HTML錶單 151
54 詳解ngModel 數據綁定 151
理解ngModelController 151
在模型與視圖之間轉換值152
追蹤值是否變化 152
跟蹤input字段有效性153
55 校驗AngularJS 錶單 153
理解ngFormController 153
運用name屬性將錶單附加到作用域上 154
為用戶信息錶單增加動態行為 154
顯示驗證錯誤 155
讓保存按鈕無效 156
使原生瀏覽器校驗無效 157
56 在其他錶單中嵌套錶單 157
將子錶單作為可重用組件 157
57 重復子錶單 158
驗證重復輸入 159
58 處理傳統的HTML錶單提交 161
直接嚮服務器提交錶單 161
處理錶單提交事件 161
使用ngSubmit處理錶單提交 162
使用ngClick處理錶單提交 162
59 重置用戶信息錶單 162
510 摘要 164
第 6 章 導航 165
61 單頁Web應用的URL 166
HTML5之前的Hashbang URL 166
HTML5和history API 167
62 使用 $location服務 168
理解$location服務API與 URL的關係 169
哈希、頁麵內導航和 $anchorScroll 170
配置HTML5方式的URL 171
客戶端 171
服務端 171
使用$location 導航 172
根據路由構建頁麵 173
路由映射URL 174
定義路由時指定控製器 174
導航的不足 175
63 使用AngularJS自帶的路由服務 175
基礎路由定義 175
顯示匹配的路由內容 176
匹配靈活的路由 177
定義默認路由 178
訪問路由參數 178
多個控製器重用局部模闆 178
路由改變時避免UI 抖動 179
取消路由更新 181
64 $route 服務的局限 182
一個路由隻對應頁麵中的一個區域 183
使用ng-include處理多個UI區域 183
不支持嵌套路由 184
65 路由相關的模式及技巧 185
處理鏈接 185
創建可點擊的鏈接 186
兼容HTML5及hashbang模式 186
鏈接外部頁麵 187
組織路由定義 187
將路由定義分離到多個模塊 188
減少路由定義的重復代碼 188
66 總結 189
第7 章 安全 191
71 提供服務端認證和授權 192
處理未授權的訪問 192
提供服務端驗證API 192
72 保護局部模闆 193
73 阻止惡意攻擊 194
防止cookie 監聽、中間人攻擊 194
防止跨站腳本攻擊 195
確保AngularJS 錶達式內HTML 內容的安全性 195
允許不安全的HTML 綁定 196
淨化HTML 196
防止JSON 注入攻擊 197
防止跨站請求僞造 198
74 客戶端安全 198
創建security 服務 199
顯示登錄錶單 200
創建安全的菜單及工具欄 201
隱藏菜單項 201
創建登錄工具欄 202
75 支持客戶端認證 203
處理認證失敗 203
攔截響應 204
HTTP響應攔截器 204
創建 securityInterceptor 服務 205
創建securityRetryQueue 服務 207
通知安全服務 208
76 防止導航到安全受限路由 208
使用路由resolve函數 209
創建授權服務 210
77 總結 212
第 8 章 創建自定義指令 213
81 什麼是 AngularJS 指令 214
理解內置指令 214
在HTML標簽中使用指令 215
82 指令的編譯生命周期 215
83 為指令編寫單元測試 217
84 定義指令 218
85 使用指令修改按鈕樣式 219
編寫一個按鈕指令 220
86 理解 AngularJS的組件指令 222
編寫一個分頁指令 222
為分頁指令編寫單元測試代碼 223
在指令中使用HTML模闆 224
從父作用域中隔離指令 225
使用@插入屬性 226
使用=綁定數據 227
使用&提供一個迴調錶達式 227
實現分頁組件 228
為指令添加分頁跳轉迴調 229
87 創建一個自定義驗證指令 230
需要其他指令的控製器 231
可選的依賴控製器 231
查找祖先元素的控製器 232
使用ngModelController 232
編寫自定義驗證指令的單元測試 233
實現自定義驗證指令 235
88 創建一個異步模型驗證器 235
模擬用戶服務 236
為異步驗證編寫測試代碼 237
實現異步驗證指令 238
89 包裝 jQueryUIdatepicker 指令 239
為包裝組件指令編寫測試代碼 240
實現jQuery datepicker 指令 242
810 小結243
第9章 創建自定義指令 245
91 使用嵌入 245
在指令中使用嵌入 245
在獨立作用域指令中使用嵌入 246
創建一個使用嵌入的提示指令 246
理解指令定義中的replace屬性 247
理解指令定義中的transclude屬性 248
使用ng-transclude插入嵌入元素 248
理解嵌入作用域 248
92 創建和使用嵌入函數 250
使用$compile 服務創建一個嵌入函數 251
在嵌入時剋隆原始元素 251
在指令中訪問嵌入函數 252
通過編譯函數中的transcludeFn來獲取嵌入函數 252
通過$transclude在指令控製器中獲取嵌入函數 253
使用嵌入創建一個if 指令 253
在指令中使用priority屬性 255
93 理解指令控製器 256
為指令控製器注入特殊依賴 257
創建一個基於控製器的分頁指令 258
理解指令控製器和鏈接函數的區彆 258
注入依賴 259
編譯過程 259
獲取其他控製器 260
獲取嵌入函數 261
創建一個手風琴指令套件 261
在手風琴組件中使用指令控製器 262
實現accordion指令 263
實現accordion-group指令 263
94 控製編譯過程 265
創建一個field指令 265
在指令中使用terminal屬性 267
使用$interpolate 服務 268
綁定驗證信息 269
動態加載模闆 269
設置field指令的模闆 270
95 小結271
第 10章 創建為全球用戶服務的AngularJS應用 273
101 使用本地化的符號和設置 274
配置本地化設置模塊 274
使用已有的本地化設置 275
本地化設置和AngularJS過濾器 275
102 處理翻譯 277
翻譯AngularJS模闆中的字符串 277
使用過濾器 278
使用指令 279
翻譯JavaScript代碼中的字符串 280
103 範式、秘訣和技巧 282
按照設定的地區初始化應用 282
將地區標識作為URL一部分帶來的問題 283
切換地區 284
針對日期、數字和貨幣的自定義過濾器 285
104 小結 287
第 11章 開發健壯的 AngularJS應用 289
111 理解AngularJS的內部運作機製 290
AngularJS不是基於字符串的模闆引擎 290
響應DOM事件更新模型 291
將模型變化傳播給DOM 291
同步DOM和模型變化 292
Scope$apply——打開AngularJS世界的鑰匙 293
深入$digest循環 295
整閤 300
112 性能優化——設置期望值、測量、調節、並重復 301
113 AngularJS應用的性能優化 303
優化CPU使用率 303
加速$digest循環 303
盡可能少進入$digest循環 310
限製每個$digest循環的執行輪數 312
優化內存占用 312
盡可能避免深度監視 312
注意監視錶達式的大小 314
ng-repeat 指令 314
ng-repeat指令中對集閤的監視 314
瞬間綁定大量監視 315
114 小結 315
第12章 打包和部署 AngularJS Web 應用 317
121 提升網絡相關的性能 318
壓縮靜態資源 318
AngularJS如何判斷依賴關係 318
編寫會被安全壓縮的JavaScript代碼 319
數組風格依賴注入的缺陷322
模闆預加載 323
使用<script>指令預加載模闆 324
填充$templateCache服務 325
組閤使用不同的預加載技術 327
122 優化首頁 327
避免顯示未經處理的模闆 328
使用ng-cloak指令隱藏DOM元素 328
使用ng-bind指令隱藏錶達式 329
引入AngularJS 和應用腳本文件 330
引用腳本文件 330
AngularJS和異步模塊定義 331
123 瀏覽器支持 333
在Internet Explorer 中使用 333
124 小結 334
索引 337
· · · · · · (
收起)