1. scope.$emit只能向parent controller传递 event与data
2. scope.$broadcast只能向child controller传递event与data
3. scope.$on用于接收event与data
4. 数据绑定
- 双向绑定
angular中双向绑定指的是视图(view)和模型(model)之间的特性。能进能出:当数据变化时,视图同时变化。当视图变化时(由用户交互改变或程序控制改变等),数据同时变化。 - 依赖注入
普通js中,函数的参数是由调用决定的,而不是函数定义决定。
angular中,参数是由定义决定,而不是调用者(这里所说的参数就是注入项 )
<div ng-app="hd>
<div hd-cms color="red"></div>
</div>
var m = angular.module('hd',[])
m.directive('hdCms',[function(){
return {
restrict:"AE",
template:"模板内容",
template:function(elem,attr){
}
}
}])
- controller
子控制器会继承父控制器的scope,
当为简单数据类型值时,继承隔离
当为复杂数据类型值时,继承不隔离
tips:
可以通过把数据保存在父对象中来实现继承不隔离。
5. 基础概念总结
- html页面加载完毕,开始加载js,css。加载的angularjs脚本等资源加载完毕时,开始寻找ng-app指令并引导整个引用,根据依赖注入列表加载依赖模块,连接整个应用,等待用户交互事件并相应。
- rootscope是ng-app的上下文,
每个controller的scope继承自rootscope,
controller中的repeater生成的每个重复项的scope继承自该controller的scope. - angular的MVC设计结构,mode提供数据,view是视图(controller和template生成的),controller是控制逻辑。
- component让angular代码松耦合,实现复用。每个component实例都有自己的独立作用域(isolate scope),每个组件不再继承自rootscope,组建的controller中推荐使用this绑定值,使用时用$ctrl.phones等
- 代码组织:
(1)每个实体一个文件
(2)根据功能区域组织代码
(3)划分成不同的module,然后依赖。
注:
app/
phone-list/
phone-list.module.js
phone-list.component.spec.js
phone-list.component.js
phone-list.template.html
app.css
app.module.js
index.html - filter过滤器将会新建一个仅仅符合条件的数组,然后repeat出来。
- $http获取数据。
- injector做的事情:
(1)加载所有的模块定义
(2)根据第一步加载的模块定义,注册所有模块的provider
(3)当请求时,懒实例化服务和他们的依赖项,通过9. - 注意:
provider,作为参数注入到函数中。
$resource代替$http