3

Mustache.jsでswitchステートメントを作成する方法はありますか

4つの異なる値のいずれかになり得る変数があります。その値に応じて、少し異なるテンプレートを出力したいと思います。

これを行う方法はありますか?

PS私はこの質問を見ましたが、それでも質問は同じように聞こえますが、その答えの中で、その人はif/else機能を実現する方法に答えていました。これはここで見つけることができます。

コードについての説明:

テンプレートのリストがあります

var templates = {
    friends :
        'here there is some html with {{vars}}'+
        'and a button on which I have to write something like'+
        'add to friends | already your friend | invitation was sent | your invitation was rejected'
    }
}

つまり、基本的に私はajax呼び出しを行っており、それと一緒にvars私を返しますtype。これは次のいずれかになります0,1,2,3。これに応じて、私は特定のテキストを書かなければなりません

4

1 に答える 1

5

編集:私はあなたがjavascriptを使用していると仮定しています。ユースケースを見た後、次のように関数を口ひげに渡すことでこれを解決できます。

function getType(){
    switch(viewObject.typeid){
    //your cases here return what you want the function to print
    }
}

これで、mustacheに送信するオブジェクトのtypeidが必要になります。これにより、ロジックをMustache(これもロジックレス)からjavascriptに戻すことができます。次に、コードに配置でき{{{getType}}}ます。

オリジナル:

私が尋ねる場合、あなたがあなたのswitch / caseステートメントを必要とする特定の使用法は何ですか?Mustacheを使用したより簡単な解決策があるかもしれません。私は多くのMustacheコードを記述しましたが、ビューモデルで関数を渡すことで解決されなかった「switch-case」シナリオに遭遇したことはありません。

関数をパラメーターとしてMustacheに渡すことができることを忘れないでください。これにより、ロジックをMustacheからビューモデルに戻すことができます。これは(ほとんどの場合)良いことです。

そうでない場合は、いつでもハンドルバーを切り替えることができます。

Mustacheは、ロジックレステンプレートに使用されます。テンプレートにロジックが多すぎることがわかった場合、Mustacheはおそらく正しい選択ではありません。代わりに、Mustacheを拡張するハンドルバーを使用できます。現在のMustacheコードは引き続き機能します。

http://handlebarsjs.com/

ハンドルバーにはswitch-caseステートメントは含まれていませんが、if / elseステートメントをはるかに簡単な方法で記述でき、機能を実行できるヘルパー関数を定義できます。

于 2012-12-15T14:55:35.227 に答える