AngularJS 如何在控制臺(tái)進(jìn)行錯(cuò)誤調(diào)試
當(dāng)我們?cè)诰帉?AngularJS 的應(yīng)用時(shí),通過(guò) Chrome, Firefox, 和 IE 的 JavaScript 控制臺(tái)來(lái)獲取隱藏在應(yīng)用之中的數(shù)據(jù)(Data)和服務(wù)(Service) 是一件非常具有挑戰(zhàn)性的工作。下面列出了一些簡(jiǎn)單的小竅門,可以幫助我們使用 Javascript 控制臺(tái)來(lái)監(jiān)視和控制一個(gè)正在運(yùn)行的 Angular 應(yīng)用,使其更加容易測(cè)試、修改甚至是實(shí)時(shí)的編寫 Angular 應(yīng)用。
1: 獲取 Scopes (作用域)
我們可以使用一行 JS 代碼來(lái)獲取任何的 Scope (甚至是 isolated scopes) :
-> ChildScope {$id: "005", this: ChildScope, $$listeners: Object, $$listenerCount: Object, $parent: Scope…}
或者獲取 isolated scopes:
-> Scope {$id: "009", $$childTail: ChildScope, $$childHead: ChildScope, $$prevSibling: ChildScope, $$nextSibling: Scope…}
這里面的 targetNode 指的是 HTML Node(HTML節(jié)點(diǎn))。你可以很容易的使用 document.querySelector() 來(lái)獲取。
2: 監(jiān)視 Scope Tree (作用域樹)
為了更好的調(diào)試我們的應(yīng)用,有些時(shí)候我們需要查看頁(yè)面上的 Scope (作用域) 的結(jié)構(gòu)師怎樣的。這時(shí)候我們就需要使用 AngularJS
Baratang 和 ng-inspector 這兩個(gè) Chrome 瀏覽器擴(kuò)展來(lái)幫助我們實(shí)時(shí)查看 Scope (作用域) 的情況。并且,這兩個(gè)擴(kuò)展還有一些其他非常有用的功能。
(1).AngularJS Baratang

(2).ng-inspector

3: 抓取 Services (服務(wù))
我們可以使用定義了 ngApp 元素的 injector 函數(shù)來(lái)抓取任何 Service (服務(wù)) 或者間接的通過(guò)任何帶有 ng-scope class 的元素來(lái)獲取 Service (服務(wù))。
-> Object {undo: function, redo: function, _pushAction: function, newDocument: function, init: function…}
// Or slightly more generic
> angular.element(document.querySelector('.ng-scope')).injector().get('MyService')
接下來(lái)我們就可以使用相關(guān)的 Service 就像我們?cè)诔绦蛑?injected(注入)過(guò)之后那樣使用。
4: 從 directive 中獲取 controller
有一些 directives (指令) 會(huì)將一些特定(通常是可以共用的)功能定義成為一個(gè)控制器。為了從控制臺(tái)中獲取一個(gè)指定 directive (指令) 的 controller (控制器) 示例, 我們只需要使用 controller() 函數(shù)。
-> Constructor {}
最后一個(gè)不常用但是屬于更高級(jí)的技巧。
5: Chrome Console(控制臺(tái)) 特性
Chrome 有很多在 console (控制臺(tái)) 中用于調(diào)試網(wǎng)頁(yè)應(yīng)用的非常好用的快捷命令。下面是對(duì) Angular 開發(fā)最有幫助的一些命令:
$0 - $4: 在 instpector window (監(jiān)控器) 中獲取最后的 5 個(gè) DOM 元素。這個(gè)快捷方法可以非常方便的幫助我們來(lái)抓取選定元素的 scopes (作用域) : angular.element($0).scope()
$(selector) 和 $$(selector): 可以方便的替代 querySelector() 和 querySelectorAll。
感謝 @zgohr 提供的這個(gè)小竅門!
總結(jié)
通過(guò)這些簡(jiǎn)單的小竅門,我們可以獲取任意 scope (作用域) 中的數(shù)據(jù)、監(jiān)控scope (作用域) 的層級(jí)、注入 services (服務(wù)) 并且 控制 directives (指令)。
所以下次,當(dāng)你想要做一些微調(diào)、檢查代碼或者從控制臺(tái)來(lái)控制一個(gè) AngularJS 應(yīng)用,我希望你能夠像我一樣記起這些小竅門并多加使用。
查看更多AngularJS的語(yǔ)法,大家可以關(guān)注:AngularJS 參考手冊(cè)英文版,也希望大家多多支持腳本之家。
- js調(diào)試系列 控制臺(tái)命令行API使用方法
- 利用Js的console對(duì)象,在控制臺(tái)打印調(diào)式信息測(cè)試Js的實(shí)現(xiàn)
- js控制臺(tái)輸出的方法(詳解)
- 淺談Sublime Text 3運(yùn)行JavaScript控制臺(tái)
- js調(diào)試系列 初識(shí)控制臺(tái)
- 禁用JavaScript控制臺(tái)調(diào)試的方法
- 利用瀏覽器的Javascript控制臺(tái)調(diào)試PHP程序
- 如何使Chrome控制臺(tái)支持多行js模式——意外發(fā)現(xiàn)
- 簡(jiǎn)述JS控制臺(tái)的使用
相關(guān)文章
python爬取安居客二手房網(wǎng)站數(shù)據(jù)(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇python爬取安居客二手房網(wǎng)站數(shù)據(jù)(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
angularJS實(shí)現(xiàn)動(dòng)態(tài)添加,刪除div方法
下面小編就為大家分享一篇angularJS實(shí)現(xiàn)動(dòng)態(tài)添加,刪除div方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
angular.js實(shí)現(xiàn)列表orderby排序的方法
今天小編就為大家分享一篇angular.js實(shí)現(xiàn)列表orderby排序的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
AngularJS基礎(chǔ) ng-model-options 指令簡(jiǎn)單示例
本文主要介紹AngularJS ng-model-options 指令,這里對(duì)ng-model-options指令的基本資料進(jìn)行整理,有需要的小伙伴可以參考下2016-08-08
Angular實(shí)現(xiàn)的簡(jiǎn)單查詢天氣預(yù)報(bào)功能示例
這篇文章主要介紹了Angular實(shí)現(xiàn)的簡(jiǎn)單查詢天氣預(yù)報(bào)功能,涉及AngularJS針對(duì)第三方API接口交互的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
詳解webpack+angular2開發(fā)環(huán)境搭建
這篇文章主要介紹了詳解webpack+angular2開發(fā)環(huán)境搭建,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Angular2學(xué)習(xí)筆記之?dāng)?shù)據(jù)綁定的示例代碼
本篇文章主要介紹了Angular2學(xué)習(xí)筆記之?dāng)?shù)據(jù)綁定的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
AngularJS動(dòng)態(tài)綁定ng-options的ng-model實(shí)例代碼
本篇文章主要介紹了AngularJS動(dòng)態(tài)綁定ng-options的ng-model實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
通過(guò)angular CDK實(shí)現(xiàn)頁(yè)面元素拖放的步驟詳解
這篇文章主要給大家介紹了關(guān)于如何通過(guò)angular CDK實(shí)現(xiàn)頁(yè)面元素拖放的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用angular具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

