1

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

3 に答える 3

1

以下のコードを使用して、剣道グリッド ヘッダーの onclick イベントを処理できます。

$('body ').on('click','.grid .k-header',function(e){

 //write your logic..
});

剣道グリッドでは、ng-click または onClick イベントを使用できません。href のみが機能します。

于 2013-12-03T16:20:42.950 に答える
1

行がグリッドに(DOMに)追加される前に、角度のあるブートストラップが実行されると思います。

その場合は、angular ブートストラップを手動で呼び出す必要があります。

于 2013-12-03T13:13:05.373 に答える
0

ディレクティブを使用してクリックに応答するとどうなるでしょうか? http://docs.angularjs.org/guide/directive ng-clickはかなり jQuery に似ています。

于 2013-12-03T15:32:44.107 に答える