当模板完全加载角度/离子时,方法会自动调用吗?

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中,还是当被调用的时候才进行加载呢?

未完全加载单元格时未调用 didSelectItemAtIndexPath

静态对象成员会在所属类的析构函数被调用时自动析构吗?

从角度模板多次调用方法

在iOS中加载xib时会调用API吗?