Mustache - 使用相同名称的嵌套部分的条件

时间:2017-04-20 21:28:48

标签: javascript mustache

我有一个类别节点(一个对象数组)。如果product字段存在,我想打印一个列表项;如果category字段存在,我想打印一个不同的列表项。

category.nodes = [
  {
    product: "1",
    type: "product"
  },
  {
    product: "2",
    type: "product"
  },
  {
    category: "categoryName",
    type: "category"
  }      
]

我的胡子模板是:

<p>
    {{#category.nodes}}
      {{#product}}
        <li>{{product}}</li>                            
      {{/product}}
      {{#category}}
        <li>{{category}}</li>
      {{/category}}
   {{/category.nodes}}
</p>

{{#category.nodes}} ... {{/category.nodes}}应将范围放入category.nodes section

部分
  

&#34;渲染文本块一次或多次,具体取决于当前上下文中键的值&#34;

文档在false values and empty lists上声明了以下内容:

  

&#34;如果人员密钥不存在或存在并且其值为null,undefined,false,0或NaN,或者是空字符串或空列表,则不会呈现该块&# 34;

当嵌套值与父值相同时,

This jsFiddle会显示一个问题({{#category}}...{{/category}}指的是全局category,而不是category.nodes.category。)

我想知道是否有某种方法可以指定哪个category被引用,因为这会给嵌套带来问题。

This jsfiddle是通过更改父级名称解决问题的方法,我想知道是否有某种方法可以指定引用哪个category,而不是重命名变量。

当该部分没有{{#category}}...{{/category}}时,问题是category打印。

1 个答案:

答案 0 :(得分:1)

此行为与the specification匹配。

  

从上到下遍历上下文堆栈,找到第一个上下文   这是a)包含名称作为键的哈希或b)响应的对象   到具有给定名称的方法

{{#category}}的成员中category.nodes不匹配时,它会遍历堆栈并在根处找到category(在此术语中位于堆栈的底部)。从我对规范的阅读中,没有办法辨别数据元素的级别。