您的位置:首页 > Web前端 > AngularJS

AngularJS自定义指令controller和link传参

2017-08-26 13:26 190 查看

指令内部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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  angularjs controller link