【问题标题】:Mustache - Conditional on nested sections using same namesMustache - 以使用相同名称的嵌套部分为条件
【发布时间】:2017-04-20 21:28:48
【问题描述】:

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

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

我的 Mustache 模板是:

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

{{#category.nodes}} ... {{/category.nodes}} 应将作用域放入category.nodes section 和部分

“根据当前上下文中键的值渲染文本块一次或多次”

文件在false values and empty lists上声明如下:

"如果person键不存在,或者存在且值为null、undefined、false、0、NaN,或者是空字符串或空列表,则不会渲染块"

This jsFiddle 演示了嵌套值与父值相同时的问题({{#category}}...{{/category}} 指的是全局 category,而不是 category.nodes.category。)

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

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

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

【问题讨论】:

  • 考虑在 github 上打开一个问题,因为它看起来像一个错误
  • (对于那些跟随的人)我已经打开了issue,当我收到作者的回复时我会更新=)

标签: javascript mustache


【解决方案1】:

此行为与the specification 匹配。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多