javascript - Angularjs ng-click 在 Kendo Grid 中不起作用

标签 javascript angularjs kendo-ui kendo-grid angularjs-ng-click

使用 angularjs 和剑道网格我试图调用一个函数来选择网格中的复选框。但无论我做什么,在 ng-click 中什么都没有发生,甚至不会抛出错误。我在调用的方法顶部添加了 console.log() 但没有显示任何内容。我试图在范围内以及直接在范围内的服务中添加该方法。

基本上我的问题是如何在剑道网格单元格模板中使用 ng-click 复选框?

这是网格绑定(bind)代码:

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;
    }

在上面的代码中, header 模板中的 genericServices.ToggleCheckAllInGrid 工作得很好。

这是通用服务的定义。

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");
            }
        };

最佳答案

我猜 Angular Bootstrap 在将行添加到网格(添加到 DOM)之前运行。

如果是这样,您必须手动调用 angular bootstrap。

关于javascript - Angularjs ng-click 在 Kendo Grid 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20351712/

相关文章:

javascript - ajax后在kendo ui dropdownlist控件上设置索引

mvvm - 剑道 ui mvvm : dynamically update multiselect datasource inside View Model' s change event

javascript - Kendo 网格插入带有自定义类的新行

javascript - Noodle.js 设置/jQuery 流程(网页抓取帮助!)

javascript - 如何在 angularjs 中的 md-list-item 中临时添加值?

javascript - angularjs $watchCollection 方法如何保留 oldCollection 引用?

javascript - 将动态变量添加到 Angular 方法似乎不起作用

javascript - 导入的函数未定义

javascript - 如何将 match() 用于字符白名单?

javascript - 在新窗口中创建和提交表单 - 不起作用