AngularJS自定义指令controller和link传参

来源:互联网 发布:中企动力源码 编辑:程序博客网 时间:2024/05/23 00:02

指令内部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

阅读全文
2 0
原创粉丝点击