两种启动方式
1. 使用 ng-app 指令 2.使用angular.bootstrap() 方法来启动。
对于父子controller的访问关系
<div ng-controller="ParentController"> <div ng-controller="ChildController"> </div> </div> 对于ChildController 的$scope 是可以访问ParentController的$scope的。
对于module提供的method
// 服务 provider(name,providerType) factory(name,providerFunction) service(name,constructor) // 定义变量 value(name,object) // 常量 constant(name,object) // 动画 animation(name,animationFactory) // 过滤器 filter(name,filterFactory) // 控制器 controller(name,constructor) // 指令 directive(name,directiveFactory) // 配置信息 config(configFn) // 运行的时候调用的初始化方法。 run(initialization)
对于$scope 和 $rootScope 和 $injector 的区别
$injector 是一个IOC容器,包含很多服务 类似spring 的bean
$scope 是javascript 中的作用域,搜索的时候,会优先查找自己的scope,如果没有查找到,会沿着作用域向上搜索,直到根作用域$rootScope
$rootScope是angular加载模块的时候自动创建的,每一个模块只有一个rootscope,rootscope创建好了之后以服务的形式加入到$injector中,rootscope是由angular核心模块ng创建的。
ng-controller 指令会给所在的DOM元素创建一个新的$scope 并为rootscope的子作用域
每个模块只有一个rootscope,但是可以有多个scope
使用angular.element().scope() 返回作用域上,距离该元素最近的scope
value和constant的区别
如果服务的$get方法是返回一个常量,那么就没有必要去定义一个包含复杂功能的完整服务
可以通过value函数去注册服务
而constant是可以被注入的。
通常情况下,使用value来注册服务或者函数,使用constant来配置数据。
父亲和儿子controller之间传递数据
可以在子controller中通过 $emit 来传递数据
父亲controller通过$on 来监听数据
对于父亲controller可以通过$broadcast广播事件
子controller中通过$on来监听数据
对于参数中的event
event.targetScope event.currentScope event.name event.stopPropagation() event.preventDefault event.defaultPrevented
service和provider和factory的区别
在angualr中 对于服务service 有 factory service provider
另外 angualr 也提供 很多其他内置服务service
$animate
$compile
$document
$timeout
$http
等
另外我们还可以创建自己的service
看下angualr源码中的实现
provider -> factory -> service function provider(name,provider){ } function factory(name,factoryFn){ return provider(name:{$get:factoryFfn}) } function service(name,constructor){ return factory(name,[‘$injector‘,function($injector){ return $injector.instantiate(constructor); }]) }
service 和factory 可以在controller中共享数据。
对于这三者的区别
- factory创建的是对象,为他添加属性,然后把这个对象返回出来。
- service是使用new 关键字实例化的,因此你应该为this添加属性,
- provider是唯一一个可以传递到config函数的service,传递的是,使用xxxProvider 才对。
对于service,是可以被依赖注入到controller中去的。
重点: service作为单例对象对象,在需要创建的时候被创建,只有在应用生命周期结束的时候,才会被清除掉
而controller会在不需要使用的时候被销毁掉。