compontent与directive的区别
总体分析
compontent独有的属性
- bindings
directive独有的属性
- compile function
- link function
- priority
- replace
- restrict
- scope
- terminal
共有的属性
- transclude
- templateUrl
- require
- controllerAs
- controller
不同之处
1. 创建方式与使用方式不同
component
第二个参数直接跟一个配置对象,而directive
要跟一个函数component
只能以标签的形式来进行使用,而directive可以使用restrict
声明多种使用方式
2. 模板的使用不同
directive
当模板来使用的时候,无论template
还是templateUrl
都必须只有一个根元素,但是component
却不是- 且在controller中接收传递的值的时候
component
一般结合钩子函数函数使用,但是directive
一般不会使用钩子函数
3. 作用域隔离
directive
是否创建隔离作用域可以由scope
属性来决定,而component
一旦创建就会创建隔离作用域
4. require不同
- 在
directive
中require
的值可以是,且称为link函数的第四个参数- 字符串
- 数组(多个时)
- 在
component
中require
是一个对象,在controller
中通过this.key
来进行使用,也需要通过钩子函数进行初始化