2013-12-16 2 views
1

내 모델의 데이터를 가져 오는 백본에서 내 뷰를 렌더링 할 때 몇 가지 문제가있어 도움을 주시면 감사하겠습니다. 여기 내 html 코드 진행됩니다백본에서 모델의 데이터를 가져 오는 템플릿 렌더링

<ul id="datos"> 

</ul> 

<script type="text/template" id="listado-template"> 
    <h2>Mi listado</h2> 
    <li>Item 1: <%= item1 %></li> 
</script> 

<script> 
    modelo = new Modelo();  
    modeloView = new ModeloView({model: modelo}); 
</script> 

을 그리고 이것은 내 모델과 내 볼 수 있습니다 :

Modelo = Backbone.Model.extend({ 
    urlRoot: 'myurljson', 
}); 

Backbone.View.extend({ 
    tagName: "ul", 

    el: "#datos", 

    template: _.template($('#listado-template').html()), 

    initialize: function() {  
     this.model.on('change', this.render, this); 
    }, 

    render: function() { 
     this.$el.append(this.template(this.model.toJSON())); 
     return this; 
    } 
}); 

문제는 내 템플릿이 잘 renderized되지이다. item1으로 정의되지 않은 오류가 나타납니다. 그러나이 태그 li을 삭제하면 h2 태그가 렌더링되므로 문제는 "myurljson"을 통해 내 모델에서 내 데이터를 가져 오는 것입니다. 어떤 도움이 필요합니까? 고맙습니다!

+0

당신은'모델을 fetch'습니까? –

+0

예. 이 백본을 렌더링 할 때'modelo.fetch'를 수행합니다.보기 – akruspe

답변

2

정의되지 않은 변수를 렌더링하려고하면 밑줄이 실패합니다. 당신은

  • http://jsfiddle.net/nikoshr/PELfV/1/

  • 에서 모델 재치에 합리적인 값

    Modelo = Backbone.Model.extend({ 
        urlRoot: 'myurljson', 
        defaults: { 
         item1: '' 
        } 
    }); 
    

    데모를 기본 item1 속성을 정의 할 수 있습니다 http://jsfiddle.net/nikoshr/PELfV/

    이 바이올린이 문제를 재현하려고 참조

    또는 인쇄하기 전에 값을 테스트하십시오.

    <script type="text/template" id="listado-template"> 
        <li>Item 1: <% if (typeof item1!=="undefined") print(item1) %></li> 
    </script> 
    

    그리고 그 데모 http://jsfiddle.net/nikoshr/PELfV/2/

+0

부분적으로 문제가 해결되었습니다. 이제는 그 오류가 나타나지 않지만 렌더링 데이터가 없습니다. 그리고 'myurljson'이 렌더링하려고하는 데이터를 반환하도록 할 수 있습니다. – akruspe

+0

코드를 실행할 때 얻을 수있는 템플릿은'Item 1 :'입니다. 내 말은 'myurljson'에서 속성 값을 얻음을 의미하지만, 값을 가지고 있기 때문에 렌더링하지 않습니다. – akruspe

+0

서버에서 반환 한 원시 JSON을 표시 할 수 있습니까? 디폴트 값과 나중에 발생하는 세트로 일어날 일이 있습니다. http://jsfiddle.net/nikoshr/PELfV/3/ – nikoshr

관련 문제