我正在使用带有以下模板的插件行扩展器(网格)。
rowBodyTpl: new Ext.XTemplate('<div>'+
'<div>'+
'<b>Vegetables:</b>'+
'<ul><li>{vegetables_types}</li></ul>'+
'</div>'+
'</div>')
显示蔬菜类型。
项目被发送到服务器,其中包含一个文本区域字段,每个值由段落分隔,从而创建一种列表。
potatos
carrots
pumpkins
如果我使用文本区域编辑这些值,它们将以与发送到服务器的格式相同的格式显示在文本区域中(如列表)。
但是,使用XTemplate,我只能在一行上显示它们。
potatos carrots pumpkins
我将不胜感激解决的建议
编辑:01-02-2016
小提琴:https://fiddle.sencha.com/#fiddle/14se
小提琴(已解决):https://fiddle.sencha.com/#fiddle/14sf
XTemplate 创建 HTML,而文本区域使用格式化的纯文本。
HTML 确实仅将代码中的换行符显示为单个空格。HTML 换行符是使用<br>
标记进行的。
因此,您必须将模板中的n
替换为<br>
才能显示换行符:
var rowBodyTpl = new Ext.XTemplate([
'<div>',
'<div style = "white-space: pre-wrap;">',
'<b>Vegetables:{[this.replaceBR(values.vegetables_types)]}</b>',
'</div>',
'</div>',
{
replaceBR:function(text) {
return text.replace(/n/g,'<br>');
}
}
]);
我看到两种方式:
-
您可以使用标记
<pre>
。此标记按原样显示预先格式化的文本,包括所有空格和新行。(更多见这里:http://www.w3schools.com/tags/tag_pre.asp)。此处示例:https://fiddle.sencha.com/#fiddle/14il -
您可以从vegetables_types字符串中制作字符串数组。我认为这是最好的方式。在它之后,您可以使用
<tpl for="vegetables_type">
语句(看这里:http://docs.sencha.com/extjs/5.1/5.1.1-apidocs/#!/api/Ext.XTemplate)。此处示例:https://fiddle.sencha.com/#fiddle/14sa