我开发了两个视图,分别是View1.xml和View2.xml
我实施了onInit()
和onAfterRendering()
。我还实现了后退按钮,我只使用router.navTo()
方法。
当我从View2返回到View1时,不会调用view1的onInit / onAfterRendering。即使按下浏览器的后退按钮,也会发生同样的情况。
请帮忙!
答案 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。