【问题标题】:How to pass bindingContext to top-level TabView如何将 bindingContext 传递给顶级 TabView
【发布时间】:2019-02-06 16:49:07
【问题描述】:

当 TabView 用作框架项目的主导航时,我需要本地化 TabViewItem title(使用 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 中没有执行。

【问题讨论】:

    标签: nativescript


    【解决方案1】:

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

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

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

    Updated Playground

    【讨论】:

    • 太棒了!您关于使用 TabView 的属性将空值设置为 bindingContext 的提示有效。你认为我需要为NativeScript 创建问题。
    • 是的,我认为应该举报。至少可以更新文档,说明应用程序资源必须正常工作。
    猜你喜欢
    • 2012-08-22
    • 2018-01-09
    • 2015-01-28
    • 2022-01-16
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多