2012-01-04 9 views
4

バックボーンの例でunderscore.jsテンプレートライブラリを使用しています。 JSONオブジェクトは、次のようになりますアンダースコア.jsを使用してJSONオブジェクトを出力するにはどうすればよいですか?

<script id="results-template" type="text/template"> 
    <h2><%= title %></h2> 
</script> 

{"src":"placeholder.jpg","title":"an image placeholder","coordinates":[0,0],"tags":["untagged"],"location":"home"} 

私は私のテンプレートでこのオブジェクトを解析しようとしていますが、私は私のコンソールを介して取得エラーは次のとおりです。

マイテンプレートはこのようになります
Uncaught ReferenceError: title is not defined 

私は間違っていますか?ライブフィドルはここにある:http://jsfiddle.net/amit_e/muLjV/46/

答えて

8

あなたの問題は、このです:

JSON.stringify(myPhoto) 

これは

myPhoto.toJSON() 

理由にする必要がある:あなたのJSON.stringify() JSON 文字列として全体myPhotoモデルを配置します。あなたはタイトルだけを表示したい場合は、全体のJSONを処理するために必要とされていないhttp://jsfiddle.net/saelfaer/muLjV/50/

+0

dahh !!私は2つのJSON関数を混乱させました。だからあなたは 'myPhoto.toJSON()'がオブジェクトをテンプレートに渡しているが、 'stringify'関数はそれを渡していないと言っていますか? –

+1

JSON.stringifyは文字列を返しますが、myPhoto.toJSON()はjsonオブジェクトを返します。この違いを確認するにはjsfiddleを確認してください。 http://jsfiddle.net/saelfaer/muLjV/55/(コンソールを確認することを忘れないでください、結果ウィンドウには出力がありません) – Sander

+0

例のおかげで@Sander –

1

:あなたはmodel.toJSON()

更新jsfiddleを使用することができますので、今、バックボーンは、JSONオブジェクトとして出力JSONにこの機能を持っています写真のモデル。ただ1つのプロパティを取得できます。

レンダリング以下で十分です。

render: function(event){ 
    var yourOutput={title:myPhoto.get('title')}; 
    var compiled_template = _.template($("#results-template").html(),yourOutput); 
    this.el.html(compiled_template);   
} 

現在のJSONオブジェクトは次のとおりです。それほど複雑ではありません、タイトル、src、座標、タグ、場所のどれも努力なしで得ることができます。

{ 
    "src": "placeholder.jpg", 
    "title": "an image placeholder", 
    "coordinates": [0,0], 
    "tags": ["untagged"], 
    "location": "home" 
} 
+0

は、jsonドキュメントの途中で式を評価できるかどうかわかりませんでした。 '{title:myPhoto.get( 'title')}'は動作しますか? –

+1

この回答は役に立ちましたか?あなたはタイトル、src、座標、タグ、上記のコードと同じ場所を得ることができます。 JSONメソッドは効率的です。あなたはそれを使用することができます:) –