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) {}
- MyController.$inject = ['$scope', 'dateFilter'];
- 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