【问题标题】:Or operator equivalent using mustache.js或使用 mustache.js 的等效运算符
【发布时间】:2012-03-16 12:19:44
【问题描述】:

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

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

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

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

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

有什么想法吗?

【问题讨论】:

  • 使用带有逻辑的模板引擎?answer>。认真想过你是否尝试过使用函数来植入逻辑并将函数放入模板数据对象中

标签: javascript templates mustache


【解决方案1】:

Mustache 明确禁止这样的事情。这是逻辑,你正试图把它放在你的模板中:)

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

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

但如果是我,我会把这个函数命名为 hasFooshowBar,所以它有点语义。

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

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

【讨论】:

    【解决方案2】:

    为了记录,这是留胡子的唯一方法。至于现在(我相信小胡子 5)没有更好的解决方案。

    【讨论】:

      猜你喜欢
      • 2012-02-08
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      相关资源
      最近更新 更多