当模板完全加载角度/离子时,方法会自动调用吗?
Posted
技术标签:
【中文标题】当模板完全加载角度/离子时,方法会自动调用吗?【英文标题】:Method get called automatically when template get completely loaded in angular / ionic? 【发布时间】:2018-10-30 07:22:22 【问题描述】:我希望在模板完全加载时自动调用一个方法。我尝试过 离子和角度的生命周期钩子,我也尝试过从模板调用方法。 html
我的 HTML 文件包含以下内容:
<h1> myMethod() </h1>
但这是多次调用myMethod
函数。
【问题讨论】:
myMethod
是做什么的,为什么不能多次调用这个函数?
我想在点击侧边菜单按钮时在设备上加载地图。这就是为什么多次调用是不可接受的。
所以myMethod
加载地图?这不应该被按钮的点击事件调用吗?您应该假设视图中这样的绑定将被多次调用。
你试过ngAfterViewChecked
吗?这是最后一个生命周期钩子,它在组件及其所有子组件完全呈现并应用 DOM 更改之后运行。
@David 点击侧边菜单按钮。它再次重置根页面。并加载新页面。因此点击事件没有多大用处。
【参考方案1】:
您应该使用 ngAfterViewInit
生命周期挂钩。 ngAfterViewInit() 在视图初始渲染后被调用。
export class YourComponent implements AfterViewInit
constructor()
ngAfterViewInit()
myMethod();
【讨论】:
我尝试过 Angular 和 ionic 的生命周期钩子。这些方法在渲染模板之前被调用。 @TonyStark 好的,你试过 ionViewDidLoad() // 把你要执行的代码放在这里 ?【参考方案2】:因为您只需调用一次myMethod()
,最好使用ionViewDidLoad
。因为仅当视图存储在内存中时才会触发此事件。进入已缓存的视图时不会触发此事件。您可以通过here了解更多信息。
因此,如果您需要调用方法 (myMethod()
),即使在此事件被触发后,最好在此事件中使用 timeout 来调用您的方法。提供与您的场景相匹配的期望超时。
示例代码:
ionViewDidLoad()
setTimeout(() =>
myMethod();
, 300);
希望这将有助于解决您的问题。
【讨论】:
难道不会在应用程序中造成不必要的延迟。 但这是唯一与您的问题匹配的地方。尝试根据您的情况以有效和高效的方式调整该延迟。这不是不必要的延误。因为有必要解决您的问题。此外,这种延迟效果只会对您的应用产生一次。 我很早就想到了这个,但我不想使用它。现在我意识到没有其他方法,只能使用超时。谢谢 np :) 如果你找到另一种方法来实现这一点,别忘了在这里更新.. ;) 当然。我会的:)以上是关于当模板完全加载角度/离子时,方法会自动调用吗?的主要内容,如果未能解决你的问题,请参考以下文章
java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被调用的时候才进行加载呢
java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被调用的时候才进行加载呢?