Extjs XTemplate怪异行为

Extjs XTemplate怪异行为,extjs,Extjs,为什么这个示例在使用双引号中的字符串构建XTemplate时失败,同样的示例在使用单引号定义字符串时也适用。代码就这样悄无声息地消失了 var tplData = [{ // 1 color : "#FFE9E9", name : 'Naomi White', age : 25, dob : '03/17/84', cars : ['Jetta', 'Camry', 'S2000'] },{ color : "#E9E9FF",

为什么这个示例在使用双引号中的字符串构建XTemplate时失败,同样的示例在使用单引号定义字符串时也适用。代码就这样悄无声息地消失了

    var tplData = [{ // 1
    color : "#FFE9E9",
    name : 'Naomi White',
    age : 25,
    dob : '03/17/84',
    cars : ['Jetta', 'Camry', 'S2000']
    },{
    color : "#E9E9FF",
    name : 'John Smith',
    age : 20,
    dob : '10/20/89',
    cars : ['Civic', 'Accord', 'Camry']
}];
var myTpl = new Ext.XTemplate( // 2
    "<tpl for='.'>", // 3
    "<div style='background-color: {color}; margin: 10px;'>",
    "<b> Name :</b> {name}<br />",
    "<b> Age :</b> {age}<br />",
    "<b> DOB :</b> {dob}<br />",
    "</div>",
    "</tpl>"
);
myTpl.compile();
myTpl.append(document.body, tplData);   
var tplData=[{//1
颜色:“FFE9E9”,
姓名:“Naomi White”,
年龄:25岁,
dob:'03/17/84',
汽车:[‘捷达’、‘凯美瑞’、‘S2000’]
},{
颜色:“E9E9FF”,
姓名:“约翰·史密斯”,
年龄:20,,
dob:'10/20/89',
汽车:[“思域”、“雅阁”、“凯美瑞”]
}];
var myTpl=new Ext.XTemplate(//2
"", // 3
"",
“名称:{Name}
”, “年龄:{Age}
”, “DOB:{DOB}
”, "", "" ); myTpl.compile(); myTpl.append(document.body,tplData);
使用单引号字符串的示例与此相同

    var tplData = [{ // 1
    color : "#FFE9E9",
    name : 'Naomi White',
    age : 25,
    dob : '03/17/84',
    cars : ['Jetta', 'Camry', 'S2000']
    },{
    color : "#E9E9FF",
    name : 'John Smith',
    age : 20,
    dob : '10/20/89',
    cars : ['Civic', 'Accord', 'Camry']
}];
var myTpl = new Ext.XTemplate( // 2
    '<tpl for=".">', // 3
    '<div style="background-color: {color}; margin: 10px;">',
    '<b> Name :</b> {name}<br />',
    '<b> Age :</b> {age}<br />',
    '<b> DOB :</b> {dob}<br />',
    '</div>',
    '</tpl>'
);
myTpl.compile();
myTpl.append(document.body, tplData);       
var tplData=[{//1
颜色:“FFE9E9”,
姓名:“Naomi White”,
年龄:25岁,
dob:'03/17/84',
汽车:[‘捷达’、‘凯美瑞’、‘S2000’]
},{
颜色:“E9E9FF”,
姓名:“约翰·史密斯”,
年龄:20,,
dob:'10/20/89',
汽车:[“思域”、“雅阁”、“凯美瑞”]
}];
var myTpl=new Ext.XTemplate(//2
'', // 3
'',
'名称:{Name}
', “年龄:{Age}
”, “DOB:{DOB}
”, '', '' ); myTpl.compile(); myTpl.append(document.body,tplData);
我想它并没有明确指出在XTemplate操作符中需要双引号,但是所有的示例和文档都使用双引号,这是推断出来的。可能应该明确地说明这一点

第一个代码块中唯一的问题是
“”,
行。运算符中需要双引号,因此,如果希望在模板字符串周围使用双引号,则必须对任何运算符进行转义,如:
“”、
,或者只使用单引号字符串以简化操作

顺便说一句,您可以通过查看XTemplate中的代码来验证这是一项要求:

nameRe = /^<tpl\b[^>]*?for="(.*?)"/,
nameRe=/^]*?for=“(.*?”/,
正如您所看到的,正则表达式显式地需要一个双引号
for
运算符