Опитвам се да ускоря своето приложение, базирано на jQuery Mobile и backbone.js, особено частта, когато подобрява елементите на формуляра (и има много от тях). Мислех си, че мога да позволя на jQM да "предварително подобри" шаблоните на формуляри и след това да компилира функцията за шаблони с подобрено маркиране, вместо да се налага да подобрявам всички елементи на формуляра при всяко изобразяване на страница. Това работеше добре, докато не приложих проверени / неотметнати квадратчета. Шаблонът основно изглежда така:
<form>
<fieldset data-role="controlgroup">
<legend>{{legend}}</legend>
{{#items}}
<label for="{{id}}">{{#name}}{{name}}{{/name}}{{^name}}No name given{{/name}}</label>
<input type="checkbox" id="{{id}}" {{#checked}}checked{{/checked}}>
{{/items}}
</fieldset>
</form>
Когато дефинирам своята шаблонна функция в Backbone-View, се опитвам да направя следното:
var preEnhance = $('<div>').hide().html($('#tmpl').html()).appendTo($('body')).trigger('create');
return Mustache.compile(preEnhance.html());
Бих искал да го използвам срещу данни като тези:
{legend: 'Pre Enhanced Forms, How?', items:[{id:'a',name:'A', checked: true},{id:'b',name:'B'},{id:'c'}]}
И все пак jQuery Mobile прави нещо странно с частта {{#checked}}checked{{/checked}}
: превръща се в {{#checked}}checked{{="" checked}}=""
, което предполагам се дължи на /
, което jQM ще интерпретира като начало на затварящ таг (поправете ме, ако греша). И така, вече не мога да изобразя шаблона.
Мога ли да направя нещо по въпроса? Правя ли нещо нередно? Има ли по-добър начин за използване на предварително подобрени шаблони? Не бих искал да стигам дотам, че да използвам подобрено и твърдо кодирано маркиране в моите шаблони.
Има и (неуспешна) демонстрационна цигулка за тези, които се интересуват.