我试图找出在 Angular 完成更新 UI 后调用 Javascript 的最佳方法。
我的问题源于 KendoUI 需要 display:block 才能正确渲染。但是,Angular 2 对 this.toggleGridView 的更改尚未呈现在页面上,这导致 jQuery("#schools-grid").height() 无法正常工作。
HTML 模板:
<im-schools-grid [style.display]="toggleGridViewState"></im-schools-grid>
Angular 2点击处理程序:
toggleGridView() {
this.toggleGridViewState = this.toggleGridViewState == "none" ? "block" : "none";
if (this.toggleGridViewState == "block") {
setTimeout((e) => {
jQuery("#schools-grid").height(this.sharedGrid.gridHeight);
jQuery("#schools-grid").data("kendoGrid").resize();
}, 100)
}
}
我目前的解决方法是使用 setTimeout,但这似乎很不合时宜。
注意 - 我们不能将 Kendo 用于 Angular 2,因为不使用 Beta 版本是一项政策。
谢谢!