私のページには、共通の機能を持つディレクティブのリストが増えていきます。ベストプラクティスとパフォーマンスを念頭に置いて、その機能を実装する最良の方法は何でしょうか.
例えば:
ページには 100 個のディレクティブがあり、各ディレクティブには共通のイベントがあります。
- マウスオーバーで隠しレイヤーを表示
- クリックで div を非表示 > ビューおよび div を表示 > 編集します。
……
テンプレート:
<div class="panel">
<div class="view">
<div class="edit-controls hidden">
<a href="#" class="edit">Edit</a>
</div>
<h3>{{......}}</h3>
<p>{{.....}}</p>
</div>
<div class="edit hidden">
<form>
........
</form>
</div>
</div>
オプション 1. ディレクティブ:
appModule.directive('elemTest', [function() {
return {
restrict: 'E',
templateUrl: '.......',
replace: true,
controller: function($scope, $element) {
},
link: function(scope, element) {
element.on('mouseover', function() {
element.find(".edit-controls").show();
});
element.on('mouseout', function() {
element.find(".edit-controls").hide();
});
element.find(".edit").on('click', function(event){
event.preventDefault();
element.children(".view").hide();
element.children(".edit").show();
});
}
}
}]);
オプション 2. リンク機能を持たないディレクティブですが、ページの下部にある jQuery スクリプト スニペットでマウスオーバー/アウト/クリック イベントを処理します。
$(".panel").live('mouseover',function() {
.......
})
$(".panel").live('mouseout',function() {
.......
})
..........
オプション3.ディレクティブリンク機能の代わりにコントローラーとng-clickを使用したディレクティブ?
オプション 4。