首页 > 解决方案 > 如何将 bindingContext 传递给顶级 TabView

问题描述

当 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 -顶级 TabView。在这个 Playground 而不是nativescript-localize插件中,我使用了返回文本的函数,你可以看到它在 中成功执行home-page.xml,但没有在app-root.xml.

标签: nativescript

解决方案


我怀疑这是一个边缘情况错误,似乎直到bindingContext设置了表达式才处理。

只是bindingContext在 XML 中声明属性似乎可以解决问题

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

更新游乐场


推荐阅读