2011-01-28 9 views
0

{{if}}ブロック内からJQuery.tmpl()を使用して文字列値を調べようとしていて、何らかの理由で機能しません。JQueryのtmplがifブロック内で期待どおりに動作しない

私はKnockoutJSを使用して、さまざまなタイプのパネルでダッシュボードをレンダリングしています。各パネルには、どのタイプのパネルであるか教えてくれるTypeプロパティがあります。だから、ここに私のデータがどのように見えるかの(非常に単純な)概念れる:

var data = {"Panels": [ 
    {"Type": "A", ... }, 
    {"Type": "B", ... }, 
    {"Type": "C", ... }, 
]}; 

はここTypeに応じて、異なるdivタグをレンダリングするテンプレートです:

しかし
<script id="template" type="text/x-jquery-tmpl"> 
    {{if Type == "A"}} 
    <div>A</div> 

    {{else Type == "B"}} 
    <div>B</div> 

    {{else Type == "C"}} 
    <div>C</div> 

    {{else}} 
    <div>'${Type}' is invalid!</div> 

    {{/if}} 
</script> 

、私は常にこのような出力が得られます。

<div>'A' is invalid!</div> 
<div>'B' is invalid!</div> 
<div>'C' is invalid!</div> 

にはどうすれば(すなわちType。)文字列プロパティを確認することができます01を使用してブロック?

ありがとうございます!ここで

答えて

0

はJSFiddleであなたのサンプルの作業用コピーです:
http://jsfiddle.net/rniemeyer/cnzeg/

は、あなたがしようとしているものとは私のサンプルについての異なるものがありますか? IEで問題を引き起こす可能性があります

だけ他の事はここにあなたのパネルアレイ上の末尾のカンマです:

var data = {"Panels": [ 
    {"Type": "A", ... }, 
    {"Type": "B", ... }, 
    {"Type": "C", ... }*,* 
]}; 

はあなたがが見ている問題を起こさないし、あなたの実際のコードではそうではなかっただろう。

+0

ありがとうございます。 http://jsfiddle.net/TrailHacker/cnzeg/2/ – Luc

+0

私はちょうど私がこれを私の答えとして受け入れているという別のコメントで更新したいと思っていましたが、私の問題をさらに調査する必要があります。あなたは私の問題が私のコードの中にあることを私に証明しました。 :) 再度、感謝します!! – Luc

+1

これを見てください:http://jsfiddle.net/rniemeyer/zRqrw/。マッピングプラグインへのパスがあなたのフィドルで正しくなかったようですので、私はそれを更新しました。主な変更点は、マッピングプラグインをすべて観測可能な状態にした後、Type()のようなコードでTypeを関数として参照する必要があることです。お役に立てれば。 –

関連する問題