ExtJS:Xtemplate不';无法识别特殊字符,如/n/r
我的商店记录有以下一些特殊字符ExtJS:Xtemplate不';无法识别特殊字符,如/n/r,extjs,special-characters,store,record,xtemplate,Extjs,Special Characters,Store,Record,Xtemplate,我的商店记录有以下一些特殊字符 name: "Hi \r\n\r\n Location Name: Hello\r\n\r\n" 但当它显示在UI上(使用XTemplate)时,特殊字符不会显示,甚至不会应用。它们只是被丢弃了 //XTemplate var cars_template = new Ext.XTemplate( '<tpl =".">', '<div class="cars-item">', '<li>
name: "Hi \r\n\r\n Location Name: Hello\r\n\r\n"
但当它显示在UI上(使用XTemplate)时,特殊字符不会显示,甚至不会应用。它们只是被丢弃了
//XTemplate
var cars_template = new Ext.XTemplate(
'<tpl =".">',
'<div class="cars-item">',
'<li>',
'<span>Name: </span><span>{[this.updateHtml(values.name)]}</span>',
'</li>',
'</div></tpl>',
{
updateHtml: function(value){
if(value){
value = value.replace(/(?:\r\n|\r|\n)/g, '<br/>');
}
return value;
}
}
);
var cars\u template=new Ext.XTemplate(
'',
'',
“”,
'Name:{[this.updateHtml(values.Name)]},
“ ”,
'',
{
updateHtml:函数(值){
如果(值){
value=value.replace(/(?:\r\n |\r |\n)/g,“
”);
}
返回值;
}
}
);
这是因为换行符不是html,它们需要以某种方式转换为html等价物
因此,对于字符串,可以如下转换新行:
var myString = 'Hi \r\n\r\n Location Name: Hello\r\n\r\n';
myString = myString.replace(/(?:\r\n|\r|\n)/g, '<br/>');
I
console.log
更改,这将用
替换新行,谢谢@weeksdev,但是如何将其集成到示例中呢?请检查我更新的代码好吗?我甚至尝试用一些随机词替换\n\r,以确保替换正在进行,但不起作用--value=value.replace(/(?:\r\n | \r | \n)/g,“TEST”)@KavitaC添加了一个带有小提琴的extjs示例,演示了如何使用dataview
。您上面的示例看起来不错,希望您能从工作示例中得出问题。@KavitaC可能是tpl
元素中缺少的导致了您的问题?仅供参考Ext.util.Format.nl2br(string)
var s = Ext.create('Ext.data.Store', {
fields: ['name'],
data: [{
name: "Hi \r\n\r\n Location Name: Hello\r\n\r\n"
}, {
name: "Hi \r\n\r\n A Test Here: Another Test\r\n\r\n"
}]
});
Ext.create('Ext.panel.Panel', {
renderTo: Ext.getBody(),
title: 'Example Replacement',
layout: 'fit',
items: [{
xtype:'dataview',
store: s,
tpl: [
'<tpl for=".">',
'<div class="cars-item">',
'<li>',
'<span>Name: </span><span>{[this.updateHtml(values.name)]}</span>',
'</li>',
'</div>',
'</tpl>',
{
updateHtml: function(value) {
console.log(value);
if (value) {
value = value.replace(/(?:\r\n|\r|\n)/g, '<br/>');
}
console.log(value);
return value;
}
}
],
multiSelect: true,
height: 310,
trackOver: true,
itemSelector: '.cars-item',
emptyText: 'Nothing to display'
}]
});