AngularJS指令"要求"参数

时间:2015-01-14 23:35:28

标签: angularjs

angular.module('app').directive('perfBegin', function() {
    return {
        restrict: 'A',
        controller: ['$log', function($log) {
            var vm  = this;

            vm._perfBegin = performance.now();
        }]
    }
});

angular.module('app').directive('perfEnd', function() {
    return {
        restrict: 'A',
        require: '^perfBegin',
        link: function(scope, el, attrs, perf) {
            $log.log('Time (ms) = ' + (performance.now() - perf._perfBegin));
        }
    }
});

我想像这样使用上面的指令......

<span perf-begin></span>

JS here

<span perf-end></span>

有可能这样做吗? 似乎AngularJS要求我将我的跨度放在我的范围内,我宁愿不这样做。 ^ require和require之间有什么区别?

1 个答案:

答案 0 :(得分:0)

不,要求不能用于姐妹元素。你可以做的是定义一个父指令,它是两个姐妹的父母,并让每个姐妹都要求父母。

<div parent>
        <span sister1>
                ...
        </span>
        <span sister2>
                ...
        </span>
</div>

require ^ parent vs require parent之间的区别是^ parent将在DOM树的上方搜索父指令。要求父(不带^)搜索指令所在的元素。在上面的例子中,使用^ parent是合适的。