查看时不希望页面刷新 - Ionic 2+
当用户首次查看主屏幕时 - 它们通过this.nav.setRoot(Page)发送到那里。当我将三个其他页面设置为根页面时,这会出现问题。例如 - 我转到设置为root的主页,以便首次加载主页数据。然后用户导航到消息页面。然后用户返回主页,数据再次被重新加载。我不希望这种情况发生。我只想调用它一次,但由于setRoot,它刷新页面。就像navCtrl.push(Page)和.pop一样,数据不会刷新。我有汉堡包导航风格,这就是为什么我在汉堡包导航中为每个页面设置了根。查看时不希望页面刷新 - Ionic 2+
app.comp.ts
openPage() { this.nav.setRoot(Page);
}
openPageTwo() {
this.nav.setRoot(MessagesPage);
}
如何重写nav.setRoot刷新?或者完全使用其他东西?
感谢
回答:
通过设置使用navCtrl.setRoot()一rootpage,你告诉离子这个页面是应用程序的导航树的开始。例如,登录后,您应该.setRoot(HomePage);
当您想从HomePage导航到MessagesPage时,应该使用navCtrl.push()弹出主页顶部的MessagesPage。例如; navCtrl.push(MessagesPage);
回答:
究竟你在哪里刷新你的数据?在什么功能?
生命周期事件
我觉得你的问题将通过使用正确的lifecycle event来解决。例如,ionViewDidLoad
:
加载页面时运行。该事件仅在每个页面创建时发生一次。如果页面离开但被缓存,则此事件在后续查看时不会再次触发。 ionViewDidLoad事件是放置页面设置代码的好地方。
您是否尝试过刷新数据?
全局变量或服务
作为替代方案,您可以创建一个全局变量或保存您的数据的服务。一旦您首次将Root设置为页面,请执行刷新并更新全局值,并且不会在您将其设置为该页面的后续时间刷新它。这不是我最喜欢的方式,但会为你做这项工作。
标签:
,而不是设置根几次,你可能会想尝试ionic tabs。
回答:
你可以使用一个提供者,因为它被存储在内存中,每一个注入它的对象都会获得它的属性和数据。
some-provider.ts
import { Injectable } from '@angular/core'; @Injectable()
export class SomeProvider {
public data: DataModel;
constructor(public http: Http) {
}
}
然后导入您的应用程序的模块providers
变量。
后,得到你的组件的构造
some-page.ts
@Component({ selector: 'app-some-page',
templateUrl: 'app-some-page.html'
})
export class AppSomePage {
data: DataModel;
constructor(public someProvider: SomeProvider) {
this.data = this.someProvider.data;
}
}
以上是 查看时不希望页面刷新 - Ionic 2+ 的全部内容, 来源链接: utcz.com/qa/259934.html