Как мога правилно да подобря предварително шаблоните на Mustache с jQuery Mobile?

Опитвам се да ускоря своето приложение, базирано на 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 ще интерпретира като начало на затварящ таг (поправете ме, ако греша). И така, вече не мога да изобразя шаблона.

Мога ли да направя нещо по въпроса? Правя ли нещо нередно? Има ли по-добър начин за използване на предварително подобрени шаблони? Не бих искал да стигам дотам, че да използвам подобрено и твърдо кодирано маркиране в моите шаблони.

Има и (неуспешна) демонстрационна цигулка за тези, които се интересуват.


person m90    schedule 22.04.2013    source източник


Отговори (1)


Опитайте тази. Просто добавете атрибута checked и подайте стойността checked.

<input type="checkbox" id="{{id}}" checked="{{#checked}}{{checked}}{{/checked}}" >

Актуализирах jsFiddle http://jsfiddle.net/PxfGt/4/

person ricardohdz    schedule 25.04.2013
comment
Благодаря, това поправя {{=", но някак си ще постави отметки във всички квадратчета, дори ако ги задам изрично на false. - person m90; 26.04.2013
comment
Това е така, защото в HTML „проверено“ и „проверено=проверено“ означават, че квадратчето трябва да бъде отметнато. - person jwadsack; 16.05.2015