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 - YouTube播放器API iframe嵌入| player.clearVideo()不起作用

javascript - 自定义日期格式的正则表达式

c++ - 成员模板特化

javascript - 带参数的代码生成未按预期工作

javascript - 需要建议编码的过滤器图标

javascript - 输入永远不会从 Angular 获得 ng-invalid-class

c++ - 在 C++ 中专门化函数模板的语法

c++ - 我们可以使用比模板中更少的参数来声明类模板吗?

javascript - 显示 mustache 数组的字段名

c# - 如何在 C# 应用程序中使用带有 Nustache 的 Partials?