X模板奇怪的行为

时间:2010-08-07 17:21:50

标签: extjs

当使用双引号中的字符串构建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
    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);       

1 个答案:

答案 0 :(得分:2)

我想它并没有明确说明XTemplate运算符中需要双引号,但是所有示例和文档都使用它们并且它是推断的。可能应该明确说明。

第一个代码块中唯一的问题是"<tpl for='.'>",行。运算符中需要双引号,因此如果您希望在模板字符串周围使用双引号,则必须转义任何类似的运算符:"<tpl for=\".\">",或者只使用单引号字符串使您的生活更轻松。

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

nameRe = /^<tpl\b[^>]*?for="(.*?)"/,

正如您所看到的,正则表达式明确要求使用双引号for运算符。