AngularJs-学习笔记2

AngularJs-学习笔记

依赖注入

优先参考博客http://www.360doc.com/content/16/1012/19/37255821_597927218.shtml

                       http://www.cnblogs.com/joyco773/p/5702337.html

  • value
  • factory
  • service
  • provider
  • constant

1.创建方式:

  • 直接通过模块:
  • app.value();
  • app.factory();
  • app.service();
  • app.provider();
  • app.constant();
  • 其实其他的controller,directive,filter等 也是直接通过 app 的函数去创建
  • 加载顺序 app.constant() -> app.provider()->app.config -> app.run().   
  • 通过内置服务$provider在config函数中创建:

          $provider.value();

  • $provider.factory();
  • $provider.service();
  • $provider.provider();
  • 总结 -- 以下提到的都是包含以上两种方式创建的 
  • 1.通过上面的加载顺序已经$provider没有constant方法,并且constant方法不可以在config阶段配置,$porvider.declator()可以修饰以上除constant以外
  • 2.service&factory 调用以上方法仅是注册,只有在通过以下方式注入controller时才会实例化,但是provider以上方法时已经实例化,这也是为什么自定义provider可以在config阶段修改的原因
  • 3.通过以上定义的name在controller注入时  实际注入的就是这个 对象,函数或者value. 
  •    a.app.service(‘servicename’, function()); app.controller('myController', servicename);或者$provider 创建
  •       service创建时,不返回任何对象,就是在设置自身 -- 在controller中调用时就是这个servicename 本身
  •    b.app.factory(‘servicename’, function()); app.controller('myController', servicename);或者$provider 创建
  •        factory可以return一个 对象,函数,value 给 --在controller中调用方式,对象:servicename.variable  servicename.method(). 函数: servicename();, value: servicename.
  •    c.app.provider(‘servicename’, function()); app.controller('myController', servicename);或者$provider 创建
  •        provider就是一个可在config阶段配置的factory,就是$get = 一个factory函数,所以也是可以返回一个对象,函数,value  --在controller中调用方式,对象:servicename.variable  servicename.method(). 函数: servicename();, value: servicename
  •        servicename对应的是服务,是由provider提供的这个服务,所以驼峰法命名,provider的名应该是servicenameProvider, 然后可以将servicenameProvider传入一个或者多个config中进行配置
  •   

2. 以上注入controller方式:

 

     方式1(内联注解,推荐使用):

    app.controller('myController', ['$scope', 'dateFilter', function ($scope, dateFilter) { }]);  

     方式2($inject注解):

      var MyController = function($scope, dateFilter) {}  
  1.      MyController.$inject = ['$scope', 'dateFilter'];  
  2.      someModule.controller('MyController', MyController);  

     方式3(隐式注解,不推荐使用):

     app.controller('myController', function ($scope, dateFilter) { });  
其实以上方式不仅可以用于注入contorller,注入其他事工厂函数同样可以
config及run阶段
 1. config(),只有$provider,自定义provider,内置provider已经$injector可以注入
 config参考博客-http://www.ituring.com.cn/tupubarticle/1385
 2.$injector需进一步学习
 
controller之间通信 - 事件通信及服务通信
参考博客-http://www.tuicool.com/articles/InuMF3J
 
路由
参考博客: http://www.cnblogs.com/xing901022/p/5154358.html
 
AngularJS promise - $q
参考博客:  https://segmentfault.com/a/1190000002788733
               http://www.jb51.net/article/61638.htm
 
AngularJS API
参考: http://www.runoob.com/angularjs/angularjs-reference.html
 
$watch()及$apply()
简单来说 -
$watch() 监控DOM上数据变化时,绑定数据到scope,自定义指令中的link函数中使用它来实现数据绑定
$apply() 就是当执行angularjs序列外的代码是 使用它来调用
参考博客:  http://blog.csdn.net/christine95/article/details/49201443

猜你喜欢

转载自lyf-email.iteye.com/blog/2330195
今日推荐