sap.m.Text对象中的条件粗体

时间:2017-03-09 03:26:31

标签: javascript sapui5

我在控制器文件中有这个代码将项目绑定到表:

        oTable.bindAggregation("items", {
            path: sRelPath,
            template: new sap.m.ColumnListItem({
                cells: [
                    new sap.m.Text({
                        text: {
                            path: 'relationship_type',
                            formatter: this.formatter.textBold
                        },
                        id: "relTypeText"
                    }),
                    new sap.m.Text({
                        text: "{client_name}",
                        id: "relClientName"
                    })
                ]
            }),

我正在尝试格式化' relationship_type'如果返回时带有某个文本字符串,则该值为粗体。我正在使用这个格式化程序:

     textBold: function(sText) {
        if (typeof sText === "string" && sText.indexOf("(Self)") > -1) {
            //return $("#relTypeText").html("<b>"+sText+"</b>");
            return sText.bold();
        }
        return sText;
     },

使用此方法,文本将作为<b>Text</b>在表格列中返回,而不是文字。我注释掉了jQuery,因为它返回了[object Object]引用。

我确定它很简单。我知道我可以在xml视图中使用sap.m.Label并使用&#39; design&#39;参数,但我在这个实例中绑定控制器中的项目。我尝试在控制器中使用sap.m.Label,但结果相同。

如果某个条件匹配,是否可以将属性附加到控制元素?如果我使用了sap.m.Label,我可以附加设计:Bold&#39;使用格式化程序的属性?我不清楚这样做的正确语法。

任何帮助表示赞赏!

**更新**

根据@Sid的建议,我在格式化程序中实现了以下代码:

     textBold: function(sText) {
        if (typeof sText === "string") {
            if (sText.indexOf("(Self)") > -1) {
                this.setDesign("Bold");
            } 
        }
        return sText;
     },

在前端返回了这个:

enter image description here

2 个答案:

答案 0 :(得分:1)

我的初步建议是,如果您允许在格式化程序中使用Label和LabelDesign,如下所示:

<Ref. to label>.setDesign(sap.m.LabelDesign.Bold)

或使用基于&#39; relationship_type&#39;。

的值的表达式绑定

替代方案:我认为问题在于您尝试使用格式化程序来返回HTML代码。在SAPUI5中,格式化程序函数处理从模型绑定传递的值,并返回一个格式以应用于生成的HTML代码。他们将样式类应用于绑定值,通常不会返回HTML元素。

  

如果某个条件匹配,是否可以将属性附加到控制元素?

是。有可能的。另一种适合您需求的方法是向相关元素添加样式类。在这种情况下,第一个文本字段。

<Controller Reference>.getView().byId("id of your element").addStyleClass("myboldclass")

其中&#34; myboldclass&#34;是包含所需格式的

  

如果我使用了sap.m.Label,我可以附加设计:Bold&#39;使用格式化程序的属性?

请使用带有格式化程序或表达式绑定的标签设计查看初始建议。

希望对你有所帮助。

答案 1 :(得分:1)

您可以在CSS中定义类似以下的样式。

.boldText {
   font-weight: bold;
}

您还可以定义格式化程序功能:

textBold: function(sText) {
            if(sText.indexOf("(Self)") > -1) {
               this.addStyleClass("boldText"); //this refers to the Text control
            }
            return sText;
        };

您可以查看此工作example

谢谢。