如何在 SAPUI5 XML 视图中使用 if-else 条件?

新手上路,请多包涵

如何在 SAPUI5 中使用来自 JSONModel 的标志(条件)的 XML 视图中实现 if-else 条件?

到目前为止,我有一个 控制器

 sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/ui/model/json/JSONModel"
], function (Controller, JSONModel) {
    "use strict";

    return Controller.extend("sap.ui.demo.myApp.myController", {
        onInit: function () {
            //// set data model on view
            var oData = {
                title: "A cool title",
                values: [{name: "Text 1", marketed: true}, {name: "Text 2", marketed: false}, {name: "Text 3", , marketed: true}]
            };

            var oModel = new JSONModel(oData);
            this.getView().setModel(oModel);
        }
    });
});

和一个 视图

 <mvc:View
    controllerName="sap.ui.demo.myApp.myController"
    xmlns="sap.m">

    <!-- using aggregation binding -->
    <Panel expandable="true" expanded="true" headerText="{/title}" width="100%" content="{/values}">
        <content>
            <Label text="{name}"/>
            <!-- if {marketed}
                    <Label text="product is marketed"/>
                 else
                    add nothing
            -->
        </content>
    </Panel>

</mvc:View>

编辑

有没有比实施感觉矫枉过正的 XML 预处理器更好的方法呢?

原文由 Benvorth 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 571
2 个回答

OpenUI5 支持 Preprocessing InstructionsExpression Binding

使用 _预处理指令_,您可以执行以下操作:

 <template:if test="{marketed}">
    <template:then>
        <Label text="product is marketed" />
    </template:then>
    <template:else>
        <Image src="path.jpg" />
    </template:else>
</template:if>

我不确定第一行中的 test 是否测试 null/not nulltrue/false 。这就是 表达式绑定 可能派上用场的地方:它允许在大括号内使用复杂的表达式:

 <template:if test="{= ${marketed} === true}">


编辑

以下解决方案可能更简单,但似乎有点老套。

将这两个元素嵌入到您的 XML 视图中,但使用复杂的表达式绑定切换可见性:

 <Label text="product is marketed" visible="{= ${marketed} === true}"/>
<Image src="path.jpg" visible="{= ${marketed} === false}"/>

原文由 Marc 发布,翻译遵循 CC BY-SA 4.0 许可协议

我不确定我是否满足了您的要求,但看起来只需将 visible 属性绑定到 marketed-flag 就可以了。

如果您需要以否定的方式绑定,您可以使用表达式绑定

 visible="{= !${/marketed}}"

原文由 user2808624 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题