2017-03-01 63 views
0

所以我有一个号码可以说19356我想它看起来像1 | 9 | 3 | 5 | 6,它也是所有被强调。这可能没有打破数字和添加管道和下划线?此外,它不一定是一个管道,只是数字之间的一条线。管和下划线之间的电话号码

+0

这些单个数字字符是否包含跨度?一个代码示例会很有帮助,但如果您只有一个未格式化的数字字符串,则需要使用javascript。 –

+0

Yer它的将是一个从oData模型的字符串我知道我可以将它分割成带有边框的单个文本,或者如您所说使用javascript并添加|但不是真的想这样做。 – J0rd4n500

+0

好吧,也许有人比我有更多的知识,但我想不出创造性的方式来定位未格式化字符串中的单个字母。你可以瞄准第一个或最后一个字符,但就是这样。 –

回答

0

我有一个解决你的问题。您可以通过扩展sap.m.FormattedText并根据需要处理功能,如下所示。

我将创建两个文件名SpecialFormattedTextSpecialFormattedTextRenderer如下。

这里是扩展FormattedText的第一类,它有一个属性int类型的数字,因为你想使用数字所以我选择int数据类型。

sap.ui.define(["sap/m/FormattedText"], function (FormattedText) { 
    "use strict"; 
    return FormattedText.extend("SpecialFormattedText", { 
     metadata : { 
      properties : { 
       number : { 
        type : "int", defaultValue : null 
       } 
      } 
     }, 
     setNumber : function(iMumber) { 
      this.setProperty("number", iMumber, true); 
      this.setProperty("htmlText", this._getUpdatedNumber(iMumber), true); 
     }, 
     _getUpdatedNumber : function(iMumber) { 
      return "<U>"+iMumber.toString().match(/.{1}/g).join('|')+"</U>"; 
     } 
    }); 
}); 

下面我就为大家要求,并设置为FormattedText的htmlText保持原有值的输入转换。您可以通过使用getNumber方法获得原始值SpecialFormattedText类对象。

而下一个重要的是我们正在写其他类中的渲染器SpecialFormattedTextRenderer。在这个类中,我们将像下面那样调用sap.m.FormattedTextRenderer类渲染器方法。

sap.ui.define(["sap/m/FormattedTextRenderer"], function (FormattedTextRenderer) { 
    "use strict"; 
    var SpecialFormattedTextRenderer = {}; 
    SpecialFormattedTextRenderer.render = function (oRM, oControl) { 
     oRM.write("<div"); 
     FormattedTextRenderer.render(oRM, oControl); 
     oRM.write("</div>"); 
    }; 
    return SpecialFormattedTextRenderer; 
},true);