指令内部controller与link传参
指令代码:
app.directive('myDirective', function() {
return {
restrict: 'AE',
controller: function ($scope, $element, $attrs) {
this.test = 1;
console.log('controller设置test值: ' + this.test);
},
link: function (scope, element, attrs, controller) {
console.log('link收到controller的值: ' + controller.test);
}
}
运行结果:
自定指令中link函数的第四个参数默认为指令内部的controller,如果在该controller内定义一个自身属性,如this.test = 1; link函数就可以直接访问controller的该属性。link函数的controller参数名可以自由定义,只要link函数中该参数名和参数列表中的参数名一致即可。
外部指令controller与link函数传参
现在再定义一个指令:
html代码:
...
<my-directive>
<my-directive2></my-directive2>
</my-directive>
...
指令代码:
app.directive('myDirective2', function() {
return {
restrict: 'AE',
require: '^myDirective',
link: function (scope, element, attrs, controller) {
console.log('myDirective2指令中link函数收到myDirective指令的controller的值: ' + controller.test);
}
}
});
运行结果:
这里切记两点:
1. html中第二个指令必须在第一个指令里面,也是作为它的子节点;
2. 第二个指令要访问外部指令中的 controller时,必须在require中指定要访问的指令名。
require的具体用法请参考:http://blog.csdn.net/victoryzn/article/details/76772068