2012-05-26 3 views
3

Я работаю в Backbone js, и я пытаюсь заполнить модель данными с помощью fetch. Проблема в том, что выборка работает, но моя модель не заполняется данными.Backbone 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

Fetch is async, поэтому он имеет success и error обратные вызовы. Поэтому не уверен, что данные будут получены к тому моменту, когда вы попытаетесь получить свойство. Попробуйте следующее:

component.fetch({ 
    success: function(){ 
     // Now you got your data 
    }}); 
Смежные вопросы