angularjs 自定义指令的分类
来源:互联网 发布:德国巧克力价格 知乎 编辑:程序博客网 时间:2024/06/13 01:16
Angular 自定义指令主要有两种:组件型指令和装饰器型指令。
1.组件型指令
组件型指令是小型的,自封装和内聚的一个整体,它包含业务所需要显示的视图以及交互逻辑。
组件型指令的写法通常是这样的:
//声明一个指令
Angular.module(‘moduleName’).directive(‘directiveName’,function(){
Return {
//可以用作html元数,也可以用作html属性
Restrict: ‘EA’,
//使用独立作用域
Scope: {configure: ‘=’},
//指定模板
templateUrl: ‘XXXX.html’,
//声明指令控制器
Controller: function functionName($scope){
………………
}
};
})
指令中return的这个结果,我们成为“指令定义对象”。
Restrict:用来表示这个指令的应用方式,它的取值可以是E(元素),A(属 性),C(类名),M(注释)这几个字母的任意组合,实际开发中常用E,A,EA这三个。对于组件型指令来说,标准用法是E,但是为了兼容IE8,通常也支持A。
Scope:有三种取值如下:
例子如下:
{
//绑定字面量
name:‘@’,
//绑定表达式
detailas:‘=’,
//绑定事件
onUpdate:‘&’,
}
这里我们绑定了三个属性,以<user-details name=’test’ details=’details’ on-update=’updateIt(times)’></user-details >为例。name的值将被绑定为字符串‘test’,而details的值不是‘details’,而是绑定到父页面scope上名为details的变量,当父页面的scope的details变量变化时,指令中的值也会变化。而onUpdate绑定的是一个回调函数,它是父页面scope上一个名为updateIt的函数,当指令代码中调用scope.onUpdate()的时候,父页面scope的updateIt函数就会被调用。
Controller:对于组件型指令,更重要的是内容信息的展示,所以我们一般不涉及指令的link函数,而应该尽量地将业务逻辑放置在controller函数中。
2.装饰器型指令
对于装饰器型指令,其定义方式如下:
angular.module(‘moduleName’).directive(‘directiveName’,function(){
return{
//用作属性
restrict:‘A’,
//声明指令link函数
Link:function(scope,element,attrs){
……..
}
};
});
装饰器指令主要用于添加行为和保持View和Model的同步,所以它不同于组件型指令,我们经常需要进行DOM操作。其restrict属性通常为A,也就是属性声明方式,这种方式更符合装饰器的语义:它并不是一个内容的主体,而是附件行为能力的连接器。装饰器型指令通常不使用新作用域和独立作用域。访问绑定的属性,来看下前面的例子:<user-details name=’test’ details=’details’ on-update=’updateIt(times)’></user-details >,现在不使用独立的作用域。
对于@型绑定,我们可以直接通过attrs取到它。attrs.name等价于name:@。
对于=型绑定,我们可以通过scope.$eval取到它。scope.$eval(attrs.details)等价于detail:‘=’。
对于&型绑定,我们也是通过scope.$eval取到它。scope.$eval(attrs.onUpdate,{times:3})等价于 onUpdate:‘&’。
- angularjs 自定义指令的分类
- AngularJS 优雅的自定义指令
- angularjs自定义指令的用法
- angularJS-创建自定义的指令
- AngularJS 世界------Angularjs指令的使用方式和自定义指令
- angularjs的自定义指令的scope
- angularjs自定义指令的样式如何设置
- angularJS 自定义指令间的相互交互
- angularjs的自定义指令及其调用方式
- angularJs自定义指令的scope配置详解
- angularJS自定义指令
- AngularJS自定义指令标签
- AngularJS-自定义指令
- angularjs自定义指令
- angularJs自定义指令
- AngularJS自定义指令
- angularjs自定义指令
- angularjs 自定义指令
- mybatis 关于时间的问题与技巧
- centos服务器配置caffe环境
- Unity计时器设计 - 基础计时器
- react native 嵌入原生Android应用中的问题
- [生存志] 第119节 刘安编著淮南鸿烈
- angularjs 自定义指令的分类
- Hibernate Set Cascade Example (save, update, delete and delete-orphan)
- MSP430 12864显示
- 如何配置spring+springmvc+mybatis环境
- 监视Linux服务器的性能
- v-model和v-for指令
- java客户端操作Hbase
- 微信开发,本地地址映射到外网的方法
- 函数的可重入性理解