2015-01-14 52 views
0
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)); 
     } 
    } 
}); 

我想用上面的指令中像这样...AngularJS指令“要求”参数

<span perf-begin></span> 

JS here 

<span perf-end></span> 

是否有可能做到这一点? 看来AngularJS要求我把我的跨度放在我的范围内,我宁愿不这样做。 ^要求和要求有什么区别?

+0

这可能会回答你的问题[创建AngularJS指令时'ngModel'的意义是什么?](http://stackoverflow.com/a/20890266/1959948) – Dalorzo

+0

所以要完成我想要的完成我需要注入一项自定义服务?看起来这样... –

回答

0

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

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

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