NATIVESCRIPT-核心(JS)-在TabView和BLANK页面之间切换

时间:2019-03-18 20:28:08

标签: javascript login nativescript core tabview

我正在开发基于TabViews的应用程序。但是,如果用户未登录,我想在应用启动时显示一个登录屏幕,或者注销后分别显示登录屏幕。 登录屏幕不应位于TabView的框架中。

TabView是在 app-root.xml 中设置的。

<TabView loaded="onLoadedTabView" id="tabView" androidTabsPosition="bottom">
    <TabViewItem title="Home">
        <Frame defaultPage="home/home-page"></Frame>
    </TabViewItem>

    <TabViewItem title="Second">
        <Frame defaultPage="second/second-page"></Frame>
    </TabViewItem>

    <TabViewItem title="Third">
        <Frame defaultPage="third/third-page"></Frame>
    </TabViewItem>
</TabView>

我有一个 login-root.xml 来加载登录页面

<Frame defaultPage="login/login-page"></Frame>

app.js 中,我想决定是先启动“ app-root”还是“ login-root”。

const appSettings = require("application-settings");
let application = require("tns-core-modules/application");


if (typeof appSettings.getString('username') === 'undefined') {
    application.run({ moduleName: "login-root" });
} else {
    application.run({ moduleName: "app-root" });
}

如果现在我首先加载登录,则再次使用 application.run({moduleName:“ app-root”}); 运行TabView。我认为,这不是最好的方法。

如何加载和呈现TabView?

我有一个 NS-PLAYGROUND 应用程序,希望您可以在其中帮助我。我真的很感谢一个解决方案:

https://play.nativescript.org/?template=play-js&id=fk1uUx

非常感谢!!

最诚挚的问候,托比亚斯

1 个答案:

答案 0 :(得分:0)

您可以简单地调用application._resetRootView(...)以用TabView替换您的根视图,或根据需要返回登录框架。

Playground Sample

另一个选项是创建一个包含TabView的新页面,并将该页面加载到登录框架中。