[转]调试AngularJS应用
原文链接:Debugging AngularJS Apps from the Console
当我们开发AngularJS应用的时候,我们想在Chrome/FF/IE控制台调试隐藏在应用中的数据和服务的很困难的,下面是一些小技巧,可以来检测和监控正在运行的应用程序,这使我们开发、调试、修改angular应用变的较为容易。
1.Access Scopes
我们可以访问任何作用域(甚至一个独立作用域),在页面使用单行JS即可实现:
1 |
> angular.element(targetNode).scope() |
2 |
-> ChildScope {$id: "005", this: ChildScope, $$listeners: Object, $$listenerCount: Object, $parent: Scope…} |
或者一个隔离的作用域:
1 |
> angular.element(targetNode).isolateScope() |
2 |
-> Scope {$id: "009", $$childTail: ChildScope, $$childHead: ChildScope, $$prevSibling: ChildScope, $$nextSibling: Scope…} |
其中targetNode是节点Dom对象,可以使用document.getElementById(),document.querySelector()等来获取。如果你不知道querySelector方法如何使用及兼容性问题,请戳这里。
2.Inspect the Scope Tree
可以使用Chrome的AngularJS BataRang插件。

3.Grab any Services
可以通过注入服务的ngApp,或者.ng-scope类名来调用:
1 |
> angular.element(document.querySelector('html')).injector().get('MyService') |
2 |
-> Object {undo: function, redo: function, _pushAction: function, newDocument: function, init: function…} |
3 |
// Or slightly more generic |
4 |
> angular.element(document.querySelector('.ng-scope')).injector().get('MyService') |
这是我们就可以调用服务的方法了,就想我们注入了服务,我们可以调用服务的方法一样。
4.Access controller for directive
Some directives define a controller with certain additional (often
shared) functionality. To access the instance of a controller for a
given directive from the console, just use the controller() function:
在我们定义的时候,会把一些公共的功能放到控制器中,为了访问控制器的实例,我们只要使用controller()方法就可以:
1 |
> angular.element('my-pages').controller() |
2 |
-> Constructor {} |
5.Chrome Console Features
Chrome我们提供一些好的快捷方式,在控制台中debug 我们的浏览器应用,在AngularJS开发中,下面有些最好的方式:
a)$0 – $4: Access the last 5 DOM elements selected in the inspector
window. This is convenient for grabbing scopes for selected elements:
angular.element($0).scope()
b)$(selector) and $$(selector): A quick replacement for querySelector() and querySelectorAll, respectively.
[转]调试AngularJS应用的更多相关文章
- 转:在控制台中调试AngularJS应用
在控制台中调试AngularJS应用 在创建AngularJS应用时,一个很棘手的问题是如何在Chrome,Firefox,以及IE的JavaScript控制台中访问深藏在应用中的数据和服务.本文将会 ...
- 3、调试AngularJs
1.获取Angular元素: angular.element(document.querySelector('html')); a.ele.scope() 提取它的$scope对象 b.ele.co ...
- AngularJS学习笔记
一.初识AngularJS:1.Angularjs通过创建实时模板来代替视图,而不是将数据合并进模板后更新DOM,任何一个独立视图组件中的值都是动态替换的. 二.数据绑定和第一个AngularJS W ...
- 使用 AngularJS 开发一个大规模的单页应用(SPA)
本文的目标是基于单页面应用程序开发出拥有数百页的内容,包括认证,授权,会话状态等功能,可以支持上千个用户的企业级应用. 下载源代码 介绍 (SPA)这样一个名字里面蕴含着什么呢? 如果你是经典的S ...
- 前端MVC学习总结(三)——AngularJS服务、路由、内置API、jQueryLite
一.服务 AngularJS功能最基本的组件之一是服务(Service).服务为你的应用提供基于任务的功能.服务可以被视为重复使用的执行一个或多个相关任务的代码块. AngularJS服务是单例对象, ...
- 前端MVC学习笔记(三)——AngularJS服务、路由、内置API、jQueryLite
一.服务 AngularJS功能最基本的组件之一是服务(Service).服务为你的应用提供基于任务的功能.服务可以被视为重复使用的执行一个或多个相关任务的代码块. AngularJS服务是单例对象, ...
- angularjs杂谈
1.MVVM的看法:我给view里面各种控件也定义一个对应的数据对象,这样,只要修改这个数据对象,view里面显示的内容就自动跟着刷新,而在view里做了任何操作,这个数据对象也跟着自动更新. Vie ...
- 《AngularJS学习整理》系列分享专栏
<AngularJS学习整理>系列分享专栏 <AngularJS学习整理>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/re ...
- Angularjs可以查看scope的插件AngularJS Batarang
AngularJS Batarang是一个显示AngularJS的scope 层次的Chrome插件,有效的快速查看一个page 中有多少Scope能够帮助我们快速方便调试AngularJS程序. 插 ...
随机推荐
- Android使用AsyncTask异步线程网络通信获取数据(get json)
摘要: android 4.0以上强制要求不能在主线程执行耗时的网络操作,网络操作需要使用Thead+Handler或AsyncTask,本文将介绍AsyncTask的使用方法. 内容: 1.添加Ht ...
- C#学习笔记(10)——再谈委托,不同国家问候的例子
说明(2017-6-14 09:08:38): 1. 首先是一个简单的委托 (1)命名空间下定义一个委托MyDel: public delegate void MyDel(string name); ...
- Android学习笔记(38):Handler消息传递处理机制
先说为什么须要Handler: Android的主线程又叫UI线程,用于处理与UI相关的时间.Android仅仅同意在主线程中改动UI组件,当我们在其它线程中须要改动UI界面时.就须要发送消息到主线程 ...
- 地籍测绘成图软件南方cass9.0支持AutoCad2010【安装文件和视频教程】
一.背景 不管你是不是,反正我是,我特别喜欢新的事物,就像软件的更新,南方Cass现在到了9.0而且支持现在的AutoCAD2010,难得的好东东!(因为我用的就是cad2010) 我随然是搞施工的, ...
- 火狐FireFox恢复备份失败,无法处理备份文件
问题:火狐浏览器丢失书签后尝试恢复书签,按[Ctrl + Shift + B]弹出我的足迹,选择[导入和备份]-->[恢复]中任一文件,弹窗[无法处理备份文件]. 解决办法: 先找到并打开火狐浏 ...
- Java并发编程:Lock和Synchronized <转>
在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问.本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方 ...
- android 开发第三库
http://blog.daimajia.com/android-library-collection/ http://www.apkbus.com/android-180062-1-1.html h ...
- E-trunk和Eth-trunk 区别
之前一直把E-trunk和Eth-trunk当作一回事,其实不然,简单说明一下. 同一设备链路聚合Eth-Trunk 一台交换机将这多个接口捆绑,形成一个Eth-Trunk接口,从而实现了增加带宽和提 ...
- Java编程的逻辑 (47) - 堆和PriorityQueue的应用
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- 【转】Smartphone--Android真机管理平台
背景 最近在工作中发现几个问题: 作为测试人员,在做产品兼容性测试时,发现手上的测试设备总是不够用,但是可能其他同事的设备在闲置着: 作为Android和H5开发人员,如果测试同事发现一个兼容性的bu ...