http://angulargrid.comから角度グリッドを調べているときに、セル内にアクション ボタンを配置したり、インライン HTML テンプレートではなく templateUrl を使用してクリックを処理したりするなど、重要でない機能に行き詰まりました。
使用例は簡単です: いくつかのデータを持つグリッドがあります。各行には、使用可能なアクション (編集、削除など) を含む 1 つのセルが含まれている必要があります。
HTML:
<div ng-if="surveysGirdOptions" ag-grid="surveysGirdOptions" class="ag-fresh" style="height :400px">
</div>
AngularJS コントローラー:
var columnDefs = [
{headerName: "Caption", field: "caption", editable: true},
{headerName: "Questions", field: "questions"},
//{headerName: "Actions", templateUrl: "views/surveys/surveyActions.html"}
{headerName: "Actions", cellRenderer: ageCellRendererFunc}
];
function ageCellRendererFunc(params) {
return '<span><a class="btn btn-sm btn-primary" ng-click="delete($index)"><span class="glyphicon glyphicon-pencil"></span></a></span><span><a class="btn btn-sm btn-primary" ng-click="delete(' + params.rowIndex + ')"><span class="glyphicon glyphicon-trash"></span></a></span>';
}
ageCellRendererFunc
関数は期待どおりに動作しますが、コントローラーにはリファクタリングして html ファイルに入れるテンプレート コードがたくさんあります。
params.rowIndex
しかし、テンプレート ファイルで (このセルの行インデックス) にアクセスする方法がわかりません。行のデータは data 変数を介してアクセスできますが、行インデックスが必要です。
それがまったく実現可能かどうか、考えはありますか?そして、可能であれば、どのように?
同じ結果を達成するための回避策があります。しかし、たとえば、データからの ID に基づいて、どの行を編集する必要があるかを見つけるために大きな配列を反復処理することは、そのインデックスによって行要素に直接アクセスする場合に比べて非効率的です。