AngularJs的一些扯淡的服务

     $provide告诉angularJs如何创建一个新的可注入的东西:即服务。通过$provide的provider方法创建出不同的供应商,$provide被注入到config中获取$provide服务然后利用不同的供应商定义服务。其中定义供应商的办法:constant,定义常量的,他定义的值不能被改变,它可以被注入到任何地方,但是不能被decorator修饰;value,可以是string、number、function,可以被改变,但是不能注入到config中,可以被decorator修饰;service,一个可注入的构造器,可用于controller中的数据共享或者通信;factory,一个可注入的function;provider,一个可配置的factory,有一个$get方法;decorator,用来装饰其他$provider。

     使用factory创建服务的时候,相当于新创建一个对象,然后在这个对象上添加属性,最后返回这个对象,当把这个服务注入到控制器的时候,控制器可以访问这个对象上的属性。使用service创建服务的时候,相当于用new关键词进行实例化,因此只需要在this上添加属性或方法,最后会自动返回this。provider唯一一个可以创建用来注入到config中的服务。

     $digest大致可以理解为整个ng中的一个脏检查循环,$apply大致可以理解为从正常的js跳到angularjs的上下文中其实也可以将某些东西加入到angular的脏检查循环中,$watch监听ng中的相关属性方法值的改变。这就要说到我们的双向绑定了,在整个angualr中的初始操作的时候将所有相关元素加入到digest循环并且绑定watch去监听,当有事件进入就会触发digest循环去查看有那些发生了变化并去作出改变,当然如果有一些元素需要加入到循环中去监控这就需要用到apply,或者是说有一些不通过事件去改变元素也需要用到apply,这就做出了两种 一种事件进入自动触发apply引起digest循环去watch元素变化,另一种则是手动启动apply。

    $eval==>$parse大致可以理解为解析界面中的表达式,eval我们很熟悉就是执行js字符串,在ng中呢它则是去走parse将页面中的那些表达式(双向绑定)去解析成我们需要的值,那么接着说$compile大致理解为将一些html字符串解析成dom元素,但是它的解析是根据从dom树以及rootscope中的各个节点解析出字符串中的各个动作返回去一个符合ng中统一需求的dom。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、angularjs的几大特性是什么? 双向数据绑定、依赖注入、模板、指令、MVC/MVVM 2、列举几种常见的...
    2e9a10d418ab阅读 1,398评论 0 10
  • 1、angularjs的几大特性是什么? 双向数据绑定、依赖注入、模板、指令、MVC/MVVM 2、列举几种常见的...
    秀才JaneBook阅读 1,557评论 0 22
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • Angular面试题 一、ng-show/ng-hide与ng-if的区别? 第一点区别是,ng-if在后面表达式...
    w_zhuan阅读 5,570评论 0 26
  • AngularJSAngularJS 是一个 MV* 框架, 最适于开发客户端的单页面应用。它不是个功能库,...
    一直以来都很好阅读 910评论 0 0