Как гласит заголовок вопроса, есть ли усы / руль способ прохождения свойств объекта ?
Так с
var o = {
bob : 'For sure',
roger: 'Unknown',
donkey: 'What an ass'
}
Могу ли я затем сделать что-то в движке шаблонов, что будет эквивалентно
for(var prop in o)
{
// with say, prop a variable in the template and value the property value
}
?
{{#each this}}
. Ваш выбор терминов также сбивает с толку (что делает один объект «верхним уровнем», а другой - нет, а что такое «предварительно определенные ключи» и т. Д.), Поэтому вы можете захотеть вернуться к этим понятиям.На самом деле это довольно легко реализовать в качестве помощника:
Тогда используя это так:
источник
РЕДАКТИРОВАТЬ: у руля теперь есть встроенный способ сделать это; см выбранный ответ выше. При работе с простыми усами, все еще действует нижеследующее.
Усы могут перебирать элементы в массиве. Поэтому я бы предложил создать отдельный объект данных, отформатированный таким образом, чтобы усы могли работать:
Теперь ваш шаблон усов будет выглядеть примерно так:
Проверьте раздел «Непустые списки» здесь: https://github.com/janl/mustache.js
источник
Это ответ @ Ben, обновленный для использования с Ember ... обратите внимание, что вы должны использовать,
Ember.get
потому что контекст передается как строка.Шаблон:
источник
Ответ @ Амит хорош, потому что он будет работать как на усы, так и на руле.
Что касается решений, предназначенных только для Handlebars, я видел несколько из них, и мне больше всего нравится
each_with_key
помощник по адресу https://gist.github.com/1371586 .'key'
, или'property'
и т. Д.источник
Спасибо за решение Бена, мой вариант использования для отображения только определенных полей в порядке
с объектом
Код:
Исходный объект:
Шаблон:
Вывод:
источник
Это вспомогательная функция для mustacheJS, без предварительного форматирования данных и получения их во время рендеринга.
Шаблон:
Выходы:
(порядок может быть случайным - это карта). Это может быть полезно, если вы знаете нужный элемент карты. Просто следите за ложными ценностями.
источник
Я использовал старую версию
1.0.beta.6
руля, я думаю, что где-то во время 1.1 - 1.3 эта функциональность была добавлена, поэтому обновление до 1.3.0 решило проблему, вот использование:Использование:
источник