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。

你可能感兴趣的:(AngularJs的一些扯淡的服务)