Я сделал помощник шаблон под названием «$» в моей установке марионетокРули хелперов в {{}} #each итератор не работает
templateHelpers:function(){
return jQuery.extend(this,{
'$':function (text){
return Handlebars.compile('{{'+text+'}}')(this);
}
});
},
это позволяет мне сделать это
{{$ collection.display}}
, который будет разрешить collection.display, как правило, имя, но может быть другое имя поля, например service_id, и тогда мой обработчик разрешит это. Поэтому у меня есть окольные, и дешевле, чем печатать
{{{{collection.display}}}}
Все хорошо. Только загвоздка в том, когда я придерживаюсь его внутри {{#each пунктов}} петли,
{{#each items}}
<option value="{{this.id}}">{{$ ../collection.display}} </option>
{{/each}}
она взрывается с
Error: Missing helper: "$"
Обратите внимание, что это не имеет значения, что я ставлю после $, когда внутри блок {{$ ничего}} не сработает, помощника просто нет.
Почему используется '../ collection.display'? особенно, почему двухточечная нотация? я думаю, что это проблема, в любом случае я не нахожу это очень полезным, если я не получу его для использования –
вам понадобится .., чтобы добраться до родительского контекста, в котором коллекция доступна, я мог бы пойти @ ROOT. Это не проблема, поверьте мне. У меня есть шаблон, который я хочу использовать для нескольких таблиц, но поле, которое я хочу показать в списке выбора, отличается. Обычно это «имя», но я могу переопределить это в своей коллекции. или модели. –
Да, хорошо, все же я думаю, что это проблема, как идти в корень внутри цикла в вашем помощнике, пытаться обнаружить двойную точку в вашем помощнике (или проверить, действительно ли она там передана) и действовать соответственно –