2012-05-26 3 views
3

Backbone js에서 작업 중이고 가져 오기를 사용하여 데이터로 모델을 채우려고합니다. 문제는 가져 오기가 작동하지만 내 모델이 데이터로 채워지지 않는 것입니다.백본 js 및 fetch()를 사용하여 데이터로 데이터 채우기

코드의 조각 :

Backbone.emulateHTTP = true; 
    Backbone.emulateJSON = true; 

    ComponentsModel = Backbone.Model.extend({ 

     initialize : function() { 

     }, 
     defaults : { 
      component_id : null 
     }, 
     urlRoot : "/components/ajax_component", 

    }); 

    ComponentsView = Backbone.View.extend({ 
     el : $('body'), 

     events : { 
      'change #component-selector' : 'changeComponent', 
     }, 

     initialize : function() { 
      _.bindAll(this, 'render', 'changeComponent'); 
      this.render(); 
     }, 

     changeComponent : function(e) { 
      var clickedEl = $(e.currentTarget); 
      var value = clickedEl.attr("value"); 
      var component = new ComponentsModel({id :value, component_id :value }); 
      component.fetch(); 
      component.toJSON(); 
      alert(component.get('component_name')); 

     }, 

     render : function() { 

     }, 
    }); 

그리고 서버에서 JSON되는 수익은 다음과 같습니다

{"component_id":"1","component_name":"Test Component 1","component_description":"A simple test component","component_required":"","user_id":"1","component_approved":"0","component_price":"0","component_overview":"'"} 

경고는 항상 정의되지 않습니다. 내가 놓친 게 있니?

답변

7

가져 오기가 비동기이므로 그 이유는 successerror 콜백입니다. 그래서 당신이 속성을 얻으려고 할 때까지 데이터를 가져올지는 확실치 않습니다. 시험해보기 :

component.fetch({ 
    success: function(){ 
     // Now you got your data 
    }}); 
관련 문제