Итерация по массивам с усами
Как получить ссылку на текущий элемент на итерации?
{{#my_array}}
<p>{{__what_goes_here?__}}</p>
{{/my_array}}
Надеюсь, я просто упускаю из виду очевидное.
Ответы
Ответ 1
В соответствии с спецификацией changelog неявный итератор (.
) был добавлен в v1.1.0 спецификации. Каждая библиотека Mustache, которая реализует хотя бы v1.1.0, должна поддерживать это.
{{#array_of_strings}}<li>{{.}}</li>{{/array_of_strings}}
Ответ 2
Из исходного кода https://github.com/bobthecow/mustache.php
/**
* The {{%IMPLICIT-ITERATOR}} pragma allows access to non-associative array data in an
* iterable section:
*
* $context = array('items' => array('foo', 'bar', 'baz'));
*
* With this template:
*
* {{%IMPLICIT-ITERATOR}}{{#items}}{{.}}{{/items}}
*
* Would render as `foobarbaz`.
*
* {{%IMPLICIT-ITERATOR}} accepts an optional 'iterator' argument which allows implicit
* iterator tags other than {{.}} ...
*
* {{%IMPLICIT-ITERATOR iterator=i}}{{#items}}{{i}}{{/items}}
*/
Ответ 3
Я немного отошел от своего кода и вспомнил, что Ruby утка напечатана. Поскольку мой массив состоял из строк, мне нужно было:
{{#my_array}}
<p>{{to_s}}</p>
{{/my_array}}
Я оставлю этот вопрос здесь в надежде спасти кого-нибудь еще некоторое время.