2012-03-16 8 views
4

を使用するオペレータと同等なので、私は口ひげテンプレートは、ロジックを持っていないことを知っているが、どのように私はこれを実装します:]または[OK]をmustache.js

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

...ヒゲのテンプレートの構文を使用していますか?私が思い付くことができる最高のはこれです:明らかに恐ろしいですと「が」内部の何かを複製するために私を必要とし

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

...。

アイデア?

+2

論理を持つテンプレートエンジンを使用しますか?真剣に考えて、ロジックを埋め込み、関数をテンプレートデータオブジェクトに入れる関数を使ってみましたか? – tkone

答えて

5

Mustacheはこれを明示的に禁じます。これは、論理だ、とあなたはあなたのテンプレート:)に入れしようとしている

適切な方法は、あなたのViewModelまたはビューオブジェクトにロジックを移動するには、次のようになります。

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

しかし、それは私だったら、Iその機能はhasFooまたはshowBarのように機能するので、意味的な意味が少しあります。

"このブロックを表示する必要がありますか?"あなたのビューまたはViewModelにでロジック、あなたが戻ってあなたのテンプレートでは、通常のセクションにしている:レコードの

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

、それは口ひげでそれを行うための唯一の方法です。今のところ(口ひげ5、私は信じている)良い解決策はありません。

関連する問題