【问题标题】:AngularJS directive wrapping Kendo UI grid does not receive valid kendoEvent包装 Kendo UI 网格的 AngularJS 指令未收到有效的 kendoEvent
【发布时间】:2014-05-28 15:13:18
【问题描述】:

所以我们正在尝试创建 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
            }
            ...
        }
    };
});

谢谢,

伊万

【问题讨论】:

    标签: angularjs controller kendo-ui grid directive


    【解决方案1】:

    您的k-on-data-bound 内容不像普通的 AngularJS 事件那样附加到范围。您需要取回范围以调用您的 gridDataBound 函数。

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

    【讨论】:

    • 您好 Guillame,感谢您的回复。但是,访问函数没有问题,而是访问 kendoEvent 有问题。我可以在 gridDataBound 中获得控制权(调试器命令停止程序),但 e 变量未定义。所以如果你的建议是如下修改:k-on-data-bound="angular.element(this).scope().gridDataBound(kendoEvent)",那么它并不能解决问题。
    • 此外,通过上述修改,gridDataBound 不再获得控制权。所以问题出在未定义的 kendoEvent 上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    相关资源
    最近更新 更多