查看时不希望页面刷新 - 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

回到顶部