包含Kendo UI网格的AngularJS指令不会收到有效的kendoEvent

时间:2014-05-28 15:13:18

标签: angularjs controller kendo-ui grid directive

因此我们尝试创建displayBasket指令以包装kendoGrid和其他功能。但是,gridDataBound函数不接收kendoEvent。我们如何解决这个问题?

在HTML中:

<display-basket grid-id="bb-grid" actions="bbActions" uids="uids" grid-options="bbOptions" grid-data-source-factory="bbDataSourceFactory" grid-data-source-options="bbDataSourceOptions">
</display-basket>

在JS中:

bsktDirModule.directive ( 'displayBasket', function ( CBPmWebAPI, $compile, $http, $parse ) {
    return {
        restrict: 'AE',
        template: '<div kendo-grid id="{{gridId}}" k-options="gridOptions" k-on-data-bound="gridDataBound(kendoEvent)"></div>',
        scope: {
            actions: '=',
            uids: '=',
            gridId: '@',
            gridOptions: '=',
            gridDataSourceFactory: '=',
            gridDataSourceOptions: '='
        },
        ...
        controller: function($scope) {
            ...
            $scope.gridDataBound = function(e) {
                debugger
            }
            ...
        }
    };
});

谢谢,

伊万

1 个答案:

答案 0 :(得分:0)

您的k-on-data-bound内容未像正常的AngularJS事件那样附加到范围。您需要取回范围来调用gridDataBound函数。

为此,请在k-on-data-bound中,在功能前添加angular.element(this).scope()。它将返回当前DOM节点的范围(因此是您的指令之一)然后您将能够访问您的函数。