gpt4 book ai didi

javascript - 如何在 SAPUI5 XML View 中使用 if-else 条件?

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:18 30 4
gpt4 key购买 nike

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

到目前为止,我有一个 Controller :

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);
}
});
});

和一个 View :

<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 预处理器更好的方法?

最佳答案

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。这就是 Expression Binding 可能派上用场的地方:它允许在大括号内使用复杂的表达式:

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

编辑

下面的解决方案可能更简单,但看起来有点老套。

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

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

关于javascript - 如何在 SAPUI5 XML View 中使用 if-else 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34653740/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com