Mustache.js: Итерации по парам ключ / значение объекта?

Созданный на 28 мая 2015  ·  11Комментарии  ·  Источник: janl/mustache.js

Можно ли перебирать пары ключ / значение объекта?

Рассмотрим этот пример:

var values = {
  'single': 'Single bed',
  'double': 'Double bed',
  'twin': 'Twin beds'
};

Эквивалентный код handlebar.js:

<select name="bed_type">
{{#values}}
  <option value="{{@key}}">{{this}}</option>
{{/values}}
</select>

Я не нашел способа сделать это с помощью mustache.js

Спасибо.

Самый полезный комментарий

Разве разрешение итерации по простому объекту действительно вводит логику в представление усов? Мой аргумент был бы отрицательным. Я поклонник принципа без логики, но мы уже можем перебирать массивы, я согласен с OP, что это излишне неудобно. Рассмотрим следующий пример:

Я бы хотел, чтобы мои данные были:

"attr": {
  "class": "foo",
  "href": "/somewhere"
}

Но это должно быть:

"attr": [
  {
    "key": "class",
    "value": "foo"
  },
  {
    "key": "href",
    "value": "/somewhere"
  }
]

Для рендеринга:

<a{{#attr}} {{ key }}="{{ value }}"{{/attr}}></a>

Все 11 Комментарий

Привет @chlab!

Вместо того, чтобы передавать данные непосредственно в средство визуализации, вы должны отформатировать их в объект view . Или используйте специальный помощник. Есть несколько идей по поводу этих потоков stackoverflow:

http://stackoverflow.com/questions/9058774/handlebars-mustache-is-there-a-built-in-way-to-loop-through-the-properties-of
http://stackoverflow.com/questions/9981907/how-to-iterate-over-a-hash-in-mustache-js

Дайте нам знать, если все еще не ясно. Ваше здоровье!

Спасибо @dasilvacontin.
Кажется, это довольно неудобный способ сделать это, не так ли? В чем причина этого? Разве не было бы намного проще руль?
Ваше здоровье

@chlab Это фундаментальный принцип Moustache. Вся логика должна быть извлечена в представление, которое отличается от шаблона. В данном случае это кажется более неловким, потому что это всего лишь немного логики, но это скользкая дорожка, на которую Усы даже не подпускают :)

Справедливо. Спасибо за объяснение!

Фундаментальный принцип, о котором говорилось изначально, делает Уса слишком самоуверенным, я не всегда хочу устраивать отдельную фазу преобразования, чтобы Усы были счастливы ...

Разве разрешение итерации по простому объекту действительно вводит логику в представление усов? Мой аргумент был бы отрицательным. Я поклонник принципа без логики, но мы уже можем перебирать массивы, я согласен с OP, что это излишне неудобно. Рассмотрим следующий пример:

Я бы хотел, чтобы мои данные были:

"attr": {
  "class": "foo",
  "href": "/somewhere"
}

Но это должно быть:

"attr": [
  {
    "key": "class",
    "value": "foo"
  },
  {
    "key": "href",
    "value": "/somewhere"
  }
]

Для рендеринга:

<a{{#attr}} {{ key }}="{{ value }}"{{/attr}}></a>

Привет, ребята,

Как я могу перебирать анонимный список? Я пробовал использовать {{#.}} И {{/.}}, Но это не сработало.

Спасибо

Чтобы перебрать анонимный список

let facts = doc.data(); res.render('index', {facts});

<ul> {{#each facts}} <li>Key: {{@key}} Value = {{this}}</li> {{/each}} </ul>

Есть в этом выпуске что-то официальное?

Как реально использовать анонимный список объектов с парами ключ-значение?

Покажите реальный пример с использованием предложенного объекта, var values = { 'single': 'Single bed', ...} и предлагаемого вывода вопроса.

PS: @ prashantcs8 твой пример реален? не работает.

@chlab мы находимся в 2018 году ... В Mustache нет возможности использовать анонимные ссылки?

@baseten , о выше , это проблема, некрасиво обеспечивать преобразование структур данных ...

Это не изящное решение, но я использую res.render('index', objs2list(obj)) там, где, возможно, существует вспомогательный метод Mustache для преобразования,

function objs2list(p) {
  r = [];
  for (var key in p) if (p.hasOwnProperty(key)) {
    r.push({"@key":key,"@val":p[key]});
  }
  return r;
}

существует?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

barbalex picture barbalex  ·  5Комментарии

SmasherHell picture SmasherHell  ·  18Комментарии

zekth picture zekth  ·  18Комментарии

ForbesLindesay picture ForbesLindesay  ·  14Комментарии

kuldeepdhaka picture kuldeepdhaka  ·  9Комментарии