胡子:从子部分中的父部分读取变量

2022-08-30 21:12:07

在 Mustache 中,是否可以在子部分中从父部分读取变量?

例如,我下面的示例,我希望{{order_store.id}}从它的父$order_store[(当前子循环的数组索引)]['id']中读取变量

模板.胡子

{{#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

如果要在客户端编译模板,另一种选择是使用与 Mustache 兼容的 HandlebarsJS 模板,并使用父表示法:

{{../order_store.id}}

推荐