2012-01-04 3 views
4

내 백본 예제와 함께 underscore.js 템플릿 라이브러리를 사용하고 있습니다. 내 템플릿은 다음과 같습니다 : 내 템플릿하지만 난 내 콘솔을 통해 얻을 착오를 통해이 객체를 구문 분석하려고언더 코어 .js를 사용하여 JSON 객체를 출력하려면 어떻게해야합니까?

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

입니다 :

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

json으로 개체는 다음과 같습니다

Uncaught ReferenceError: title is not defined 

내가 뭘 잘못하고 있니? 라이브 바이올린은 여기에 있습니다 : http://jsfiddle.net/amit_e/muLjV/46/

답변

8

문제는 이것이다 :

JSON.stringify(myPhoto) 

myPhoto.toJSON() 

이유가 될 필요가있다 : 당신의 JSON.stringify() JSON 문자열으로 전체 myPhoto 모델을 넣어 것입니다. 지금, 백본은 JSON 객체로 출력 JSON이 기능을 가지고, 그래서 당신은 model.toJSON()

업데이트 jsfiddle 사용할 수 있습니다 만 제목을 표시하려면 http://jsfiddle.net/saelfaer/muLjV/50/

+0

dahh !! 두 JSON 함수를 혼동했다. 그래서'myPhoto.toJSON()'이 템플릿을 따라 객체를 전달하고 있지만'stringify' 함수는 그렇지 않다고 말하는 겁니까? –

+1

JSON.stringify가 문자열을 반환하는 반면 myPhoto.toJSON()은 json 객체를 반환한다고 말합니다. 이 차이를 확인하려면 jsfiddle을 확인하십시오. http://jsfiddle.net/saelfaer/muLjV/55/ (콘솔을 점검 할 때 명심하십시오. 결과 창에는 출력이 없습니다) – Sander

+0

알았습니다! 예제를 주셔서 감사합니다 @Sander –

1

를, 그것의 전체 JSON을 처리하는 데 필요하지 않습니다 사진 모델. 방금 단일 속성을 검색 할 수 있습니다.

아래에서 렌더링이 충분합니다.

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 방식을 효율적으로 찾는다. 당신은 그것을 사용할 수 있습니다 :) –

관련 문제