乔
乔
# 一、开始 > how Angular interacts with the browser's event loop?. - Angular 如何与浏览器的 event loop 相互作用? - 再说,为什么要与浏览器的 event loop 相互作用?  Integration with the browser event loop ##...
# ng中的事件机制 > Scopes can propagate(传送) events in similar fashion(类似的方式) to DOM events. The event can be broadcasted(向下广播) to the scope children or emitted(向上发布) to scope parents. ng中的作用域拥有发送事件,携带信息的能力,类似于DOM的事件类型,ng中的Scope拥有$emit向上发布到$rootScope,$broadcast向下广播到所有的子节点,当我们想在不同作用域之间做数据交互的时候,不免会考虑到使用事件机制携带数据,在指定的作用域上使用$on接受即可。 但我们在实际中使用事件机制来携带数据时,可能需要接受事件来获取数据的作用域只有一两处,而ng的事件模型却帮我们遍历了所有的子作用域或者父作用域,换句话说,我们使用了一种大范围的广播携带数据,却只在某一处有价值的使用了数据,这点,就造成了性能上的浪费。 参考《精通AngularJS》...
# modules module构成了我们的web应用。 从面向对象的角度来看,我们期望module拥有: - 包含自身信息的属性,如name,requires(依赖)以及others; - 供外界用于向module内部填充内容的方法,如constant,service,factory,directive以及controller等。 ## 1. module对象 ``` js // 实现module类 function Module(name,requires) { this.name = name; this.requires = requires; } Module.prototype.constant = function (value) {...
# 前提 依赖注入与$injector 1. AngularJS的世界里,依赖注入的实现使我们面向对象编码过程中,能够更清晰的管理类之间的耦合关系,将构造所需实例的逻辑使用统一的方法实现,在ng中,这个方法就是$injector。 2. 当我们将依赖的实现交给$injector后,自身内部不再出现关于依赖的实现逻辑,但是,$injector帮我们实现的依赖有时并不能完全满足当前对象的逻辑,这时,我们需要在依赖的实现逻辑中加入我们自身的逻辑。 3. 那么,问题来了,该部分逻辑应该放在哪里?首先,这部分逻辑不应该出现在自身内部,因为按照依赖注入的设计,当我们声明依赖时,只需关注自身如何使用依赖,并不关心依赖的实现过程;其次,不应该出现依赖自身的实现上,自定义的逻辑应该只适用于自身的依赖,不能改变该依赖本身的实现方式。 思考,能否在$injector的逻辑中,存在修改已注册依赖的入口,让我们针对具体对象能够配置对应的依赖,并且没有破坏原有依赖自身的实现逻辑? ## 依赖注入关注各个对象之间的关系,ng中将可以被依赖注入的对象,称为服务,以下将对依赖的修改统称为对服务的修改。 # 什么是decorator 首先来看ng官方的定义: The $provide service has a number of methods for registering components with the $injector. Many...
# 场景 当我使用iframe将一个另一个独立开发的web网页嵌入到ngApp中时,ng向我抛出了一个错误,它认为使用iframe来引入一个陌生的url所指引的web网页是不安全的,但开发者判断这是个安全的来源。我们需要告知ng。精确来说,我们需要告知ng中负责安全限制的 $sce。 # $sce是什么 > $sce is a service that provides Strict Contextual Escaping services to AngularJS. > > Strict Contextual Escaping (SCE) is a mode in which...