因此我们尝试创建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
}
...
}
};
});
谢谢,
伊万
答案 0 :(得分:0)
您的k-on-data-bound
内容未像正常的AngularJS事件那样附加到范围。您需要取回范围来调用gridDataBound
函数。
为此,请在k-on-data-bound
中,在功能前添加angular.element(this).scope()
。它将返回当前DOM节点的范围(因此是您的指令之一)然后您将能够访问您的函数。