如何将bindingContext传递给顶级TabView

时间:2019-02-06 16:49:08

标签: nativescript

当TabView用作Frame项目的主导航时,我需要本地化TabViewItem 标题(使用Nativescript Sidekick-> General-> TypeScript-> Tab Navigation生成的应用)。

对于本地化,我使用nativescript-localize插件,并在app.ts中进行下一次初始化以用于模板:

import * as app from "tns-core-modules/application";
import { localize } from "nativescript-localize";

app.getResources().L = localize;

app.run({ moduleName: "app-root" });

app-root.xml还有下一个内容:

<TabView androidTabsPosition="bottom">
    <TabViewItem title="{{ L('catalog') }}">
        <Frame defaultPage="pages/catalog/catalog-page"></Frame>
    </TabViewItem>

    <TabViewItem title="{{ L('notifications') }}">
        <Frame defaultPage="pages/notifications/notifications-page"></Frame>
    </TabViewItem>
</TabView>

如果我在带有初始化的{{ L('catalog') }}的最终页面中使用下一个构造bindingContext,那么一切都会按预期进行。但是在顶级TabView中,此构造不起作用。我认为这是因为尚未初始化bindingContext,但如何为顶级TabView初始化它。

为了进行测试和原型制作,我创建了Playground-top level TabView。相反,在这个Playground中,我使用的是nativescript-localize插件,该函数返回文本,并且您可以看到它在home-page.xml中成功执行,但未在app-root.xml中执行。

1 个答案:

答案 0 :(得分:1)

我怀疑这是一个小问题,似乎在设置bindingContext之前表达式不会被处理。

仅用XML声明bindingContext属性似乎可以解决问题

<TabView androidTabsPosition="bottom" bindingContext=""> 

Updated Playground