使用angularjs和kendo网格我试图在选择网格中的复选框时调用一个函数。但无论我做什么都没有在ng-click中发生,甚至不会抛出错误。我在调用的方法的顶部添加了console.log()但没有显示。我试图在范围内的服务中添加方法,也直接在范围中添加。
基本上我的问题是如何使用ng-click一个kendo网格单元格模板中的复选框?
这是网格绑定代码:
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");
}
};
答案 0 :(得分:1)
我想在添加到网格中的行(到DOM)之前运行了角度引导程序。
如果是这样,你必须手动调用angular bootstrap。
答案 1 :(得分:1)
您可以使用以下代码处理kendo网格标题上的onclick事件:
$('body ').on('click','.grid .k-header',function(e){
//write your logic..
});
在剑道网格中,您无法使用ng-click或onClick事件。只有href才有效。
答案 2 :(得分:0)
如果您使用指令来响应点击该怎么办? http://docs.angularjs.org/guide/directive ng-click
非常像jQuery。