Динамически отображать частичные шаблоны, используя усы - PullRequest
6 голосов
/ 29 мая 2010

Есть ли способ динамического внедрения частичных шаблонов (и он работает одинаково в Ruby и Javascript)? По сути, я пытаюсь отобразить различные типы объектов в списке.

Лучшее, что я могу придумать, это:

<div class="items">
{{#items}}
<div class="item">
  {{#is_message}}
  {{> message}}
  {{/is_message}}

  {{#is_picture}}
  {{> picture}}
  {{/is_picture}}
</div>
{{/items}}
</div>

Я не в восторге от такого подхода. Есть ли лучший способ?

Также обратите внимание, что различные типы моделей для представлений могут иметь неодинаковые поля. Я полагаю, что я всегда мог бы перейти к наименьшему общему знаменателю и иметь хэш данных, содержащий html, однако я бы предпочел использовать шаблоны усов.

1 Ответ

1 голос
/ 11 января 2011

Я сделал то же самое, что и вы, и для каждого типа свойства мне была нужна динамическая частичная, я просто установил динамическую переменную в модели данных js, которая отображается в шаблоне ...

eval("this.set({is_" + this.get("propertyType") + ": true})")

или

this["is_" + propertyType] = true

По крайней мере, мне не нужно вручную устанавливать переменную 'is_whwhat' ...

Было бы здорово, если бы у mustache.js или ICanHaz.js был какой-то умный синтаксис для динамических свойств внутри тегов усов ... возможно что-то вроде этого:

{{>{{message}} }}
...