onInit,onAfterRendering返回页面时没有被调用

时间:2016-06-10 20:52:23

标签: javascript sapui5

我开发了两个视图,分别是View1.xml和View2.xml 我实施了onInit()onAfterRendering()。我还实现了后退按钮,我只使用router.navTo()方法。

当我从View2返回到View1时,不会调用view1的onInit / onAfterRendering。即使按下浏览器的后退按钮,也会发生同样的情况。

请帮忙!

3 个答案:

答案 0 :(得分:0)

我在一个示例项目中检查了它。似乎第一个视图没有被破坏,只是去了后台。当您启动后退操作时,它只会将第一个视图移动到顶部,而不调用渲染方法。

您想在渲染器方法中做什么?

  • 如果您想要显示与数据相关的更改,则无需重新渲染,因为它是通过数据绑定自动完成的
  • 如果要更新控件,可以直接.invalidate().rerender()控件,这将调用控件的正确生命周期方法。它比重新审视整个观点要好得多。

要强制重新渲染,您可以使用导航事件处理程序中的this.getView().invalidate()this.getView().rerender()使视图无效。请务必在必要时调用这两种方法,因为它会影响您网站的性能。

答案 1 :(得分:0)

onInit是唯一的,并且总是只调用一次,这是如何定义的!此外,您不应该依赖onAfterRendering来监听路由的匹配事件,而是查看SDK的导航和路由教程!你永远不知道视图何时被重新渲染,所以请确保你理解它何时对我们有意义,即在重新渲染之后修改DOM,或者你需要在DOM中的某个地方注册第三方库... < / p>

答案 2 :(得分:0)

请在oninit()中尝试这段代码,如下所示:

onInit:function(){

    this.getView().addEventDelegate({

        onBeforeShow:function(evt)
        {
            alert("Hi U came to init function");

} })

}, 希望这会奏效。 请检查它,让我知道它是否有效。 谢谢, Deepak Raj。