Sapui5 返回具有高亮显示颜色的值
要求:我有一个扩展的Sapui5 返回具有高亮显示颜色的值,sapui5,Sapui5,要求:我有一个扩展的fragment.xml文件。表单元素当前正在使用formatter.js进行处理,我正在根据某些条件验证一些值: 在片段中,格式化程序函数被正确调用 <Text text="{ parts: [ {path: 'ZName1'}, {path: 'ZStatus1'} ], formatter: '.Formatter.delivery' }" > 在输出中,我应该根据条件以绿色、黄色或红色突出显示sRe
fragment.xml
文件。表单元素当前正在使用formatter.js
进行处理,我正在根据某些条件验证一些值:
在片段中,格式化程序函数被正确调用
<Text text="{
parts: [
{path: 'ZName1'},
{path: 'ZStatus1'}
],
formatter: '.Formatter.delivery'
}" >
在输出中,我应该根据条件以绿色、黄色或红色突出显示
sResult
。文本绑定不适用于突出显示文本。请参考示例以了解替代解决方案
<Text id="id" text="{ZName1}" class="{parts: [{path: 'ZName1'},{path: 'ZStatus1'} ],
formatter : '.Formatter.delivery'}">
在片段文件中:
<Text text="{parts: [{path: 'ZName1'},{path: 'ZStatus1'}],
formatter : '.Formatter.delivery'}" >
在格式化程序文件中:
delivery: function(sName, sStatus) {
switch(sStatus){
case "A":
this.addStyleClass("greenTxtHlight");
this.removeStyleClass("yellowTxtHlight");
this.removeStyleClass("redTxtHlight");
break;
case "P":
this.removeStyleClass("greenTxtHlight");
this.addStyleClass("yellowTxtHlight");
this.removeStyleClass("redTxtHlight");
break;
case "G"://Update this
this.removeStyleClass("greenTxtHlight");
this.removeStyleClass("yellowTxtHlight");
this.addStyleClass("redTxtHlight");
break;
}
return sName;
}
不要使用普通的
sap.m.Text
,而是利用它与Text
完全相同,但支持语义颜色(通过状态
)开箱即用
运行以下代码段以查看结果:
sap.ui.getCore().attachInit(()=>sap.ui.require([
“sap/m/List”,
“sap/m/CustomListItem”,
“sap/m/ObjectStatus”,//而不是文本
“sap/ui/core/ValueState”,
“sap/ui/model/json/JSONModel”,
],(列表、项、对象状态、值状态、JSONModel)=>new List().bindItems({
路径:“/myData”,
模板:new Item().addContent(new ObjectStatus({
正文:“{ZName1}”,
声明:{
路径:“ZStatus1”,
格式化程序:状态=>
状态==“A”?值状态。成功://绿色
状态==“P”?值状态。警告://黄色
状态==“Z”?值状态。错误://红色
ValueState。无
},
}).addStyleClass(“sapUiSmallMargin”),
}).setModel(新的JSONModel({
我的数据:[
{
ZName1:“成功”,
ZStatus1:“A”
},
{
ZName1:“警告”,
ZStatus1:“P”
},
{
ZName1:“错误”,
ZStatus1:“Z”
},
{
ZName1:“无”,
ZStatus1:“
},
],
})).placeAt(“内容”)代码>
窗口[“sap ui配置”]={
libs:“sap.ui.core,sap.m”,
预加载:“异步”,
主题:“萨普·伯利兹”,
兼容版本:“边缘”,
“xx waitForTheme”:对,
“xx异步”:真
}
this.addStyleClass(“greenTxtHlight”)代码>此处将不获取控件的上下文。您需要通过byId方法获取它。此
引用文本上下文。在使用此方法引用控件上下文之前,现在它引用控制器。请查看答案。如果您只想有条件地以语义颜色显示文本,则无需操纵CSS。这是否回答了您的问题?
<Text text="{parts: [{path: 'ZName1'},{path: 'ZStatus1'}],
formatter : '.Formatter.delivery'}" >
.greenTxtHlight {
color: green;
}
.yellowTxtHlight {
color: yellow;
}
.redTxtHlight {
color: red;
}
delivery: function(sName, sStatus) {
switch(sStatus){
case "A":
this.addStyleClass("greenTxtHlight");
this.removeStyleClass("yellowTxtHlight");
this.removeStyleClass("redTxtHlight");
break;
case "P":
this.removeStyleClass("greenTxtHlight");
this.addStyleClass("yellowTxtHlight");
this.removeStyleClass("redTxtHlight");
break;
case "G"://Update this
this.removeStyleClass("greenTxtHlight");
this.removeStyleClass("yellowTxtHlight");
this.addStyleClass("redTxtHlight");
break;
}
return sName;
}