AngularJS自定义指令controller和link传参

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值