angularjs と剣道グリッドを使用して、グリッド内のチェックボックスを選択して関数を呼び出そうとしています。しかし、何をしても ng-click では何も起こらず、エラーもスローされません。呼び出されたメソッドの先頭に console.log() を追加しましたが、何も表示されません。スコープ内および直接スコープ内のサービスにメソッドを追加しようとしました。
基本的に私の質問は、剣道グリッドセルテンプレートのチェックボックスで ng-click を使用する方法ですか?
グリッド バインド コードは次のとおりです。
var cols = this.GetGridColumns(uiConfig.GridColumns);
var grid = $("#kGrid").kendoGrid({
dataSource: {
serverPaging: true,
serverSorting: true,
schema: {
data: "data",
total: "total",
model: {
id: "relatedEntityID"
}
},
pageSize: 10,
transport: {
read: function(options) {
/* read from service */
}
}
},
columns: cols,
scrollable: false,
pageable: { "refresh": true, "pageSizes": true },
sortable: true,
filterable: true,
selectable: "multiple",
change: () => this.onChange()
});
そして、ここにの定義があります
GetGridColumns(columns: Array<servicePath.SLF.solutionEngine.Model.Admin.GridColumn>): any
{
var colHeader = new Array();
colHeader.push({
template: '<input type="checkbox" id="cbItem" class="checkbox" ng-click="genericServices.selectRow(\'kGrid\', $event)" />',
headerTemplate: '<input type="checkbox" id="check-all" ng-click="genericServices.ToggleCheckAllInGrid(\'#kGrid\', $event)" />',
width: '30px'});
var column = new servicePath.SLF.solutionEngine.Model.CMs.GridColumnCM();
for (var j=0 ; j < columns.length; j++)
{
column = new servicePath.SLF.solutionEngine.Model.CMs.GridColumnCM();
column.Field = columns[j].BindingName;
column.Title = columns[j].BindingName;
column.ColumnType = columns[j].GridColumnType;
column.HorizontalAlignment = columns[j].HorizontalAlignment;
column.LocalizedName = columns[j].LocalizedLabel;
colHeader.push({ title: column.Name, field: columns[j].BindingName, template: column.Template } );
}
return colHeader;
}
上記のコードでは、ヘッダー テンプレートの genericServices.ToggleCheckAllInGrid が完全に正常に機能しています。
これはgenericServicesの定義です。
this.selectRow = function (gridId: string, e: any): void {
gridId = '#' + gridId;
console.log(gridId);
var elem = angular.element(e.currentTarget);
var row = elem.closest("tr");
var checked = elem.prop('checked');
if (checked) {
//-select the row
row.addClass("k-state-selected");
} else {
//-remove selection
row.removeClass("k-state-selected");
}
};