【发布时间】:2017-08-14 22:46:39
【问题描述】:
有没有一种方法可以捕获网格的 dataBound 事件,类似于我们在 jQuery 版本的 Kendo UI 中使用的方法。数据加载到网格后,我需要执行一个操作。
有一个 dataStateChange 事件,但在初始加载期间不会触发此事件。
目前,我正在使用超时功能来延迟执行,但这不是永久可靠的解决方案。
谢谢。
【问题讨论】:
标签: angular kendo-ui kendo-ui-angular2
有没有一种方法可以捕获网格的 dataBound 事件,类似于我们在 jQuery 版本的 Kendo UI 中使用的方法。数据加载到网格后,我需要执行一个操作。
有一个 dataStateChange 事件,但在初始加载期间不会触发此事件。
目前,我正在使用超时功能来延迟执行,但这不是永久可靠的解决方案。
谢谢。
【问题讨论】:
标签: angular kendo-ui kendo-ui-angular2
我认为为此使用 Angulars 内置工具就足够了。
首先建议为网格创建一个新组件:
grid.component.html
<kendo-grid [data]="tableData" #myTable>
<kendo-grid-column field="ListItem" title="List Item">
<ng-template kendoGridCellTemplate let-dataItem>
{{ dataItem.title }}
</ng-template>
</kendo-grid-column>
</kendo-grid>
Angular 的 ngAfterViewInit 生命周期钩子将在初始化后触发:
grid.component.ts
import { AfterViewInit, Component, ElementRef, Input, ViewChild } from '@angular/core';
@Component({
selector: 'app-table',
templateUrl: `./table.component.html`,
})
export class TableComponent implements AfterViewInit {
@ViewChild('myTable') myTable: ElementRef;
public ngAfterViewInit() {
console.log('loaded', this.myTable);
}
public tableData = [
{ title: 'Number 1', id: 'one'},
{ title: 'Number 2', id: 'two'},
];
}
如果数组的内容发生变化,我们会选择AfterContentChecked,它在每次类成员发生变化并调用detectChanges 之后运行,也就是说,当内容在生命周期中重新渲染时组件。
【讨论】:
ngOnChanges,除非有特殊的事情要处理onPush