AngularJS 如何在控制臺進(jìn)行錯誤調(diào)試
當(dāng)我們在編寫 AngularJS 的應(yīng)用時,通過 Chrome, Firefox, 和 IE 的 JavaScript 控制臺來獲取隱藏在應(yīng)用之中的數(shù)據(jù)(Data)和服務(wù)(Service) 是一件非常具有挑戰(zhàn)性的工作。下面列出了一些簡單的小竅門,可以幫助我們使用 Javascript 控制臺來監(jiān)視和控制一個正在運(yùn)行的 Angular 應(yīng)用,使其更加容易測試、修改甚至是實時的編寫 Angular 應(yīng)用。
1: 獲取 Scopes (作用域)
我們可以使用一行 JS 代碼來獲取任何的 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é)點)。你可以很容易的使用 document.querySelector() 來獲取。
2: 監(jiān)視 Scope Tree (作用域樹)
為了更好的調(diào)試我們的應(yīng)用,有些時候我們需要查看頁面上的 Scope (作用域) 的結(jié)構(gòu)師怎樣的。這時候我們就需要使用 AngularJS
Baratang 和 ng-inspector 這兩個 Chrome 瀏覽器擴(kuò)展來幫助我們實時查看 Scope (作用域) 的情況。并且,這兩個擴(kuò)展還有一些其他非常有用的功能。
(1).AngularJS Baratang
(2).ng-inspector
3: 抓取 Services (服務(wù))
我們可以使用定義了 ngApp 元素的 injector 函數(shù)來抓取任何 Service (服務(wù)) 或者間接的通過任何帶有 ng-scope class 的元素來獲取 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')
接下來我們就可以使用相關(guān)的 Service 就像我們在程序中 injected(注入)過之后那樣使用。
4: 從 directive 中獲取 controller
有一些 directives (指令) 會將一些特定(通常是可以共用的)功能定義成為一個控制器。為了從控制臺中獲取一個指定 directive (指令) 的 controller (控制器) 示例, 我們只需要使用 controller() 函數(shù)。
-> Constructor {}
最后一個不常用但是屬于更高級的技巧。
5: Chrome Console(控制臺) 特性
Chrome 有很多在 console (控制臺) 中用于調(diào)試網(wǎng)頁應(yīng)用的非常好用的快捷命令。下面是對 Angular 開發(fā)最有幫助的一些命令:
$0 - $4: 在 instpector window (監(jiān)控器) 中獲取最后的 5 個 DOM 元素。這個快捷方法可以非常方便的幫助我們來抓取選定元素的 scopes (作用域) : angular.element($0).scope()
$(selector) 和 $$(selector): 可以方便的替代 querySelector() 和 querySelectorAll。
感謝 @zgohr 提供的這個小竅門!
總結(jié)
通過這些簡單的小竅門,我們可以獲取任意 scope (作用域) 中的數(shù)據(jù)、監(jiān)控scope (作用域) 的層級、注入 services (服務(wù)) 并且 控制 directives (指令)。
所以下次,當(dāng)你想要做一些微調(diào)、檢查代碼或者從控制臺來控制一個 AngularJS 應(yīng)用,我希望你能夠像我一樣記起這些小竅門并多加使用。
查看更多AngularJS的語法,大家可以關(guān)注:AngularJS 參考手冊英文版,也希望大家多多支持腳本之家。
相關(guān)文章
angular同一頁面跳轉(zhuǎn)重新執(zhí)行的實現(xiàn)方法
這篇文章主要介紹了angular同一頁面跳轉(zhuǎn)重新執(zhí)行的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11Angular項目中使用scss文件的一些技巧小結(jié)
SCSS是Sass 3引入新的語法,其語法完全兼容 CSS3,并且繼承了Sass的強(qiáng)大功能,下面這篇文章主要給大家介紹了關(guān)于Angular項目中使用scss文件的一些技巧的相關(guān)資料,需要的朋友可以參考下2022-05-05Angular自定義組件實現(xiàn)數(shù)據(jù)雙向數(shù)據(jù)綁定的實例
下面小編就為大家分享一篇Angular自定義組件實現(xiàn)數(shù)據(jù)雙向數(shù)據(jù)綁定的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12Angular 2 利用Router事件和Title實現(xiàn)動態(tài)頁面標(biāo)題的方法
本篇文章主要介紹了Angular 2 利用Router事件和Title實現(xiàn)動態(tài)頁面標(biāo)題的方法,具有一定的參考價值,有興趣的可以了解一下2017-08-08angularJS實現(xiàn)表格部分列展開縮起示例代碼
這篇文章主要介紹了angularJS實現(xiàn)表格部分列展開縮起示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09Angular2學(xué)習(xí)教程之組件中的DOM操作詳解
這篇文章主要給大家介紹了Angular2學(xué)習(xí)教程之組件中DOM操作的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來看看吧。2017-05-05angular6.x中ngTemplateOutlet指令的使用示例
本篇文章主要介紹了angular6.x中ngTemplateOutlet指令的使用示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08