作成中のソート列ヘッダーを表示する簡単なディレクティブを<table>
作成しました。
ngGrid.directive("sortColumn", function() {
return {
restrict: "E",
replace: true,
transclude: true,
scope: {
sortby: "@",
onsort: "="
},
template: "<span><a href='#' ng-click='sort()' ng-transclude></a></span>",
link: function(scope, element, attrs) {
scope.sort = function () {
// I want to call CONTROLLER.onSort here, but how do I access the controller scope?...
scope.controllerOnSort(scope.sortby);
};
}
};
});
作成されるいくつかのテーブル ヘッダーの例を次に示します。
<table id="mainGrid" ng-controller="GridCtrl>
<thead>
<tr>
<th><sort-column sortby="Name">Name</sort-column></th>
<th><sort-column sortby="DateCreated">Date Created</sort-column></th>
<th>Hi</th>
</tr>
</thead>
したがって、並べ替え列がクリックされたときに、グリッドコントローラーで onControllerSort 関数を起動したいのですが、行き詰まっています! これまでのところ、これを行うことができた唯一の方法は<sort-column>
、「onSort」の属性を追加し、ディレクティブでそれらを参照することです。
<sort-column onSort="controllerOnSort" sortby="Name">Name</sort-column>
しかし、私は常に controllerOnSort を呼び出したいので、それはあまり良いことではありません。HTML に不要なマークアップを必要とせずに、ディレクティブ内でこれを行うにはどうすればよいですか? それが役立つ場合、ディレクティブとコントローラーの両方が同じモジュール内で定義されます。