自定义指令的选项参数
angular.module('myApp', [])
.directive('myDirective', function() {
return {
restrict: String, //'EACM', 元素,属性(默认),类名,注释
priority: Number, // 1000 > 0, 0代表默认最低优先级,数越大优先级越高
terminal: Boolean, // true的意思是停止与否,如果此指令的表达式为真,那么继续执行其它,为假更低优先级的指令就不运行了
// 使用了 terminal 参数的例子是 ngView 和 ngIf 。 ngIf 的优先级略高于 ngView ,如果 ngIf 的表达式值为 true ,
// View 就可以被正常执行,但如果 ngIf 表达式的值为 false ,由于 ngView 的优先级较低就不会被执行。
template: String or Template Function: function(tElement, tAttrs){
}, // templateUrl可以替代它,更方便
templateUrl: String or Template Function: function(tElement, tAttrs){
}, // 1. 在本地开发时,需要在后台运行一个本地服务器,用以从文件系统加载HTML模板,否则会导致Cross Origin Request Script(CORS)错误。
// 2. 模板加载是异步的,意味着编译和链接要暂停,等待模板加载完成
replace: Boolean or String, // 默认false, 以子元素插入; true意思是替代原来元素
scope: Boolean or Object, // 默认false, scope 设置为 true 时,会从父作用域继承并创建一个新的作用域对象
// scope: {
// ngModel: '=', // 将ngModel同指定对象绑定
// onSend: '&', // 将引用传递给这个方法
// fromName: '@' // 储存与fromName相关联的字符串
// }
transclude: Boolean, // 只有当你希望创建一个可以包含任意内容的指令时, 才使用 transclude: true
controller: String or
function(scope, element, attrs, transclude, otherInjectables) {
},
controllerAs: String,
require: String,
link: function(scope, iElement, iAttrs) {
},
compile: // 返回一个对象或连接函数,如下所示:
function(tElement, tAttrs, transclude) {
return {
pre: function(scope, iElement, iAttrs, controller) {
},
post: function(scope, iElement, iAttrs, controller) {
}
}
// 或者
return function postLink( ) {
}
}
};
});