AngularJs是gooogle开源的一套web前端框架,主要有五大特性:双向数据绑定,mvc,模版,Directives ,依赖注入等,为了更好的学习AngularJs为此学习了一些AngularJs的基本运行机制,这里主要讲一下AngularJs是如何运行的.
1.每次加载html时,会解析生成DOM(文件对象模型)
2.然后加载angular.js脚本
3.页面文档完成加载并解析完毕之后会触发DOMContentLoaded事件
4.AngularJs找到ng-app指令,确定应用程序的边界
5.使用ng-app中的制定模块配置$injector(在引导启动是,AngularJs创建了一个$injector,并且使用这个$injector来调用控制函数,service函数,filter函数等,其它可能依赖到的函数)
6.使用injector来创建compile服务和$rootScope($rootScope是其它所有作用域的父级,作用域的形式类似于父子、树状的关系,并且最根部的就是 $rootScope
实例。就像作用域是被DOM树驱动着创建的一样,作用域树也是在模仿 DOM 的结构。)
7.然后对html中的指令进行解析运行实现
8.浏览器会一直保持回路来等待事件的触发,一旦有事件触发,就会进入到JavaScript的context中,一般通过回调函数修改DOM
9.等到回调函数执行完毕,浏览器根据新的DOM来渲染页面
只有在Angularjs中的context才能享受Angularjs的服务,对于原生的javas必须通过$apply来把它包进angularjs中才可以.
说一下AngularJs中经常用到的scope.scop有四大特性:
- Scope提供$watch方法监视Model的变化。
- Scope提供$apply方法传播Model的变化。
- Scope可以继承,用来隔离不同的application components和属性访问权限。
- Scope为Expressions的计算提供上下文。
$digest
digest像是Angularjs的心跳,每隔50秒刷新一次,刷新的时候会触发所属的所有scope和其所有的scope下的dirty checking,dirtychecking又会触发$watch(),整个Angularjs双向绑定数据就活了起来.
$watch
在digest观察是如果watch监视的value有变化就会被触发,Angularjs内部实现的model的实时更新
$apply
$scope.$apply会触发digest,当执行序列不是被angular序列创建的时候,我们可以用scope.apply把这个函数包起来,这里讲一个用到的实例
Bid.refresh = function () { var refresh_page = document.getElementById('id') if (refresh_page) { var scope = angular.element(refresh_page).scope(); scope.$apply(function () { scope.refreshes(); }) } }
这是在做partybid是用到的,angularjs不支持调用其它controller页面的函数,在这里我们要对接收到的信息实时刷新在页面上,通过scope.$apply把刷新的方法包起来,就可以实现.
对Angularjs理解的还不是很深,如果有不恰当的地方,请指正,Angular持续学习中,持续更新
相关推荐
本文主要介绍AngularJS 工作原理,这里整理了相关资料及示例代码,有兴趣的小伙伴可以参考下
《精通AngularJS》深入浅出地讲解了AngularJS的开发概念和原理,并通过丰富的开发实例向读者展示了构建复杂应用的完整过程,包括学习使用AngularJS特有的基于DOM的模板系统,实现复杂的后端通信,创建漂亮的表单,...
学习角 构建一个基本的应用程序来学习 AngularJS 的工作原理
而将数据显示在页面上,并且有一定的交互效果(比如点击等用户操作及对应的页面反应)则是js主要完成的工作。很多时候我们不可能每次更新数据便刷新页面(get请求),而是通过向后端请求相关数据,并通过无刷新加载...
接下来讲解这些概念背后的原理,看看这些概念之间是如何协作的,包括AngularJS的工作模式等。最后介绍最佳实践,将主要介绍实战经验,包括如何把一些不常用但很有用的API发掘出来,如何把看起来平淡无奇的框架特性...
与data-binding相关的术语琳琅满目: $watch,$apply,$digest,dirty-checking等等它们是如何工作的呢?让我们从头开始讲起吧 AngularJS 的双向数据绑定是被浏览器逼的 浏览器看上去很美,其实在数据交互这块儿,由于...
本文实例讲述了AngularJS数据绑定原理。分享给大家供大家参考,具体如下: 注 这篇文章主要是写给新手的,是给那些刚刚开始接触Angular,并且想了解数据帮定是如何工作的人。如果你已经对Angular比较了解了,那强烈...
AngularJS的工作原理是:HTML模板将会被浏览器解析到DOM中, DOM结构成为AngularJS编译器的输入。AngularJS将会遍历DOM模板, 来生成相应的NG指令,所有的指令都负责针对view(即HTML中的ng-model)来设置数据
AngularJS入门工作坊的设定-LibertyJS 2015 您一直想知道AngularJS的工作原理,并且需要一个玩耍的地方。 该项目将帮助您对键盘造成足够的伤害,以学习AngularJS及其工具生态系统的基础知识。要求安装(NodeJS)...
但是这种工作方式在AngularJS的应用中会有例外。 由于AngularJS的依赖注入是根据参数名进行注入的,显然,对参数进行重命名会破坏这个机制。 如果不进行特殊处理,进行压缩(minify)之后,在执行时将会出现这样的...
风扇盒 - 终极风扇 这是 AngularJS 中的多个功能的演示。 它在 NodeJS Express 服务器上运行。 它利用多个视图和路线在网站上显示功能。 我创建了 Fax Box 来演示如何在公司网站... 工作原理页面 订购页面 联系页面
好吧,这个故事结束了:-) 请确保您了解该语言的工作原理,包括最高级的功能,例如: 通过闭包访问的变量范围发生了什么语言原型系统是如何工作的,以及如何使用它创建“伪类”并进行“伪继承”。 它是如何工作的,...
该应用程序的工作原理应用程序文件系统布局结构基于有项目。 此应用程序没有动态后端(没有应用程序服务器)。 相反,我们通过获取静态json文件来伪造应用程序服务器。 阅读最后的“开发”部分,以熟悉如何运行和...
转弯并检查结束转弯的工作原理,其中包括10秒后超时的机制。 加入一个表也可以(当前有1个表)。 在扑克方面,有一些代码使用奇妙的Scala模式匹配机制来提取扑克手。 当然,它需要进行一些严格的测试,以确保它在每...
工作原理::安装 首先,您需要在<head>标记的底部添加以下代码。 此代码包括es5填充程序,以及使IE8像往常一样工作所需的一些脚本和样式。 <!--[if IE 8]> <!-- you can use a CDN or host it locally ...
我们已将 Grunt 配置为适合您,但如果您有兴趣了解有关 Grunt 工作原理的更多信息,请查看 Grunt 的或观看。 运行应用程序 运行应用程序 $ grunt 该应用程序在端口 3000 上运行(在配置)。 要更改端口,请修改...
一个学习 AngularJS 内部工作原理的项目。
使用的技术选择Spring-boot( )建立一个基于后端REST体系结构和使用AngularJS( )的前端实现的快速工作模型。会消耗这些服务。 Hibernate envers( )将用于审核对数据库行的所有更改,并查询特定时间点的更改。 ...
您可以通过运行以下命令来安装它们: npm install这也将运行bower,它将下载此应用程序所需的角度文件该应用程序的工作原理运行应用运行npm start 将您的浏览器导航到http://localhost:8000/app/index.html以查看在...