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

spu*_*dly 8 javascript templates mustache

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

<?php
  if ($a || $b) {
    echo $c, $d, $e;
  }
?>
Run Code Online (Sandbox Code Playgroud)

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

{{#a}}
  {{c}}{{d}}{{e}}
{{/a}}
{{^#a}}
  {{#b}}
    {{c}}{{d}}{{e}}
  {{/b}}
{{/a}}
Run Code Online (Sandbox Code Playgroud)

...这显然是可怕的,并要求我复制'if'中的任何内容.

有任何想法吗?

bob*_*cow 10

胡子明确禁止这样的事情.这是逻辑,你试图把它放在你的模板:)

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

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

但如果是我,我会将该功能命名为hasFoo或者showBar,因此它具有一些语义含义.

因为你正在处理"我应该展示这个块吗?" 您的View或ViewModel中的逻辑,您将返回模板中的正常部分:

{{#aOrB}}
  {{c}}{{d}}{{e}}
{{/aOrB}}
Run Code Online (Sandbox Code Playgroud)