Усы: чтение переменных из родительского раздела в дочернем разделе
Возможно ли в Mustache считывать переменную из родительского раздела в дочернем разделе?
например, мой пример ниже, я хочу, чтобы {{order_store.id}} читал переменную из этого родителя $order_store [(индекс массива текущего дочернего цикла)] ['id "]
шаблон .mustache
{{#order_store}}<table>
<caption>
Store Name: {{name}}
Product Ordered: {{products}}
Product Weights: {{products_weight}}
</caption>
<tbody>
{{#shipping_method}}<tr>
<td>
<input type="radio" name="shipping[{{order_store.id}}]" id="shipping-{{id}}" value="{{id}}" />
<label for="shipping-{{id}}">{{name}}</label>
</td>
<td>{{description}}</td>
<td>{{price}}</td>
</tr>{{/shipping_method}}
</tbody>
</table>{{/order_store}}
примеры данных (в PHP);
$order_store => array(
array(
'id' => 1,
'name' => 'Kyriena Cookies',
'shipping_method' => array(
array(
'id' => 1,
'name' => 'Poslaju',
'description' => 'Poslaju courier'
),
array(
'id' => 2,
'name' => 'SkyNET',
'description' => 'Skynet courier'
),
),
));
Ответы
Ответ 1
Усы не позволяют ссылаться на родительские объекты. Любые данные, которые вы хотите отображать в пределах дочернего раздела, должны содержаться в дочернем массиве.
Например:
$order_store => array(
array(
'id' => 1,
'name' => 'Kyriena Cookies',
'shipping_method' => array(
array(
'id' => 1,
'name' => 'Poslaju',
'description' => 'Poslaju courier',
'order_store_id' => '1'
),
array(
'id' => 2,
'name' => 'SkyNET',
'description' => 'Skynet courier',
'order_store_id' => '1'
),
),
));
Затем вы можете использовать тег {{order_store_id}}
.
Точечная нотация не помогла бы в этом случае - она не волшебным образом даст вам доступ к родительскому массиву. (Кстати, нотация точек не поддерживается всеми синтаксическими анализаторами усов, поэтому лучше избегать ее использования, если есть вероятность, что вы захотите повторно использовать свои шаблоны с другим языком программирования в будущем.)
Ответ 2
Если шаблон должен быть скомпилирован на стороне клиента, другой вариант - использовать HandlebarsJS шаблоны, совместимые с Mustache, и используйте родительскую нотацию:
{{../order_store.id}}
Ответ 3
У меня была та же проблема, с пустым объектом, который не является нулевым
<div class="photo">
{{#picture.id}}
<img src="{{picture.src}}" alt="{{picture.name}}" />
{{/picture.id}}
</div>
как вы можете видеть, я могу использовать picture.id в выражении "if" picture.src значение
Ответ 4
Для некоторых парсеров Усы необходимо {{order_store.id}}
.
Классическим примером является SwaggerCodegen. Каждое свойство "name" переопределяет свойство "name". В этом случае {{../model.name}}
вызывает ошибку. Я обойду его следующим:
{{name}} // model (parent) name value
{{#vars}}
{{model.name}} // model (parent) name value
{{name}} // vars (child) name valu
{{/vars}}
Ответ 5
Трюк здесь находится в начале вашего шаблона, чтобы добавить:
{{%DOT-NOTATION}}