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

时间:2012-03-16 12:19:44

标签: javascript templates mustache

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

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

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:8)

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

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

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

但如果是我,我会将该功能命名为hasFooshowBar,因此它具有一定的语义含义。

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

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

答案 1 :(得分:0)

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