我创建了一个简单的指令,用于显示<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 函数..但我被卡住了!到目前为止,我能够做到这一点的唯一方法是为 each <sort-column>
,为“onSort”添加属性并在指令中引用这些属性:
<sort-column onSort="controllerOnSort" sortby="Name">Name</sort-column>
但这不是很好,因为我总是想调用controllerOnSort,所以为每个指令都插入它有点难看。如何在指令中执行此操作而不需要在我的 HTML 中进行不必要的标记?如果有帮助,指令和控制器都在同一个模块中定义。