Странное поведение XTemplate - PullRequest
       1

Странное поведение XTemplate

0 голосов
/ 07 августа 2010

Почему этот пример потерпит неудачу, если шаблон 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 Ответ

2 голосов
/ 08 августа 2010

Полагаю, в нем явно не говорится, что в операторах XTemplate требуются двойные кавычки, но все примеры и документация используют их, и это выводится.Это, вероятно, следует указать явно.

Единственная проблема в первом блоке кода - строка "<tpl for='.'>",.Двойные кавычки требуются в операторах, поэтому, если вы предпочитаете использовать двойные кавычки вокруг строк шаблона, вы должны избегать любых операторов, например, так: "<tpl for=\".\">", Или просто используйте строки в одинарных кавычках, чтобы облегчить вашу жизнь.

Кстати, вы можете убедиться, что это требование, посмотрев код в XTemplate:

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

Как видите, регулярное выражение явно ожидает оператора for в двойных кавычках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...