2015-01-14 89 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是適當的。