javascript - 或者使用 mustache.js 的等效运算符

标签 javascript templates mustache

好的,所以我知道 mustache 模板没有逻辑,但我该如何实现:

<?php
  if ($a || $b) {
    echo $c, $d, $e;
  }
?>

... 使用 mustache 模板语法?我能想到的最好的是:

{{#a}}
  {{c}}{{d}}{{e}}
{{/a}}
{{^#a}}
  {{#b}}
    {{c}}{{d}}{{e}}
  {{/b}}
{{/a}}

...这显然很可怕,需要我复制“if”中的任何内容。

有什么想法吗?

最佳答案

Mustache 明确禁止这样的事情。这是逻辑,您正试图将其放入您的模板中:)

适当的方法是将逻辑移动到您的 ViewModel 或 View 对象:

<?php
class MyView {
    public $a;
    public $b;
    public function aOrB() {
        return $this->a || $this->b;
    }
}

但如果是我,我会将该函数命名为类似 hasFooshowBar 的名称,因此它具有一些语义意义。

因为您正在处理“我应该显示这个 block 吗?” View 或 ViewModel 中的逻辑,您将返回到模板中的正常部分:

{{#aOrB}}
  {{c}}{{d}}{{e}}
{{/aOrB}}

关于javascript - 或者使用 mustache.js 的等效运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9737114/

相关文章:

javascript - 需要为我的导航创建一个移动版本不成功

javascript - 使用 Javascript 绘制天气数据图

c++ - "could not convert template argument"指针参数错误,即使使用强制转换

使用模板参数的 C++ 大括号初始化

mustache - 如何在 mustache 值中包含换行符?

javascript - 将 Css 转换为 jQuery

c++ - 收集有关在程序中实例化哪些模板变体的信息

javascript - Backbone JS单页应用文件上传?

javascript - Mustache 平面数组到嵌套元素中

javascript - 使用 javascript 隐藏 HTML <img ...>