2012-12-24 13 views
6

Si è verificato un problema quando il mio modello è stato recuperato dal server. Vedo il JSON corretto restituito dal server in chrome dev tools ma il modello non si aggiorna con i valori restituiti.Backbone Model.fetch restituisce i dati ma non aggiorna il modello

var listtemplate = new ListTemplateModel.Model({id: id}); 
listtemplate.fetch();

Vedo i dati corretti negli strumenti di sviluppo di Chrome a questo punto. Ecco cosa ritorna dal server:

 
{ 
    "title": "Template one", 
    "id": "template_one", 
    "steps": [ 
    { 
     "description": "I love it", 
     "id": 1, 
     "created_at": "2012-12-24T18:01:48.402Z" 
    }, 
    { 
     "description": "This is rubbish!", 
     "id": 1, 
     "created_at": "2012-12-24T18:01:48.402Z" 
    } 
    ], 
    "created_at": "2012-12-24T18:01:48.402Z" 
} 

ma console accedendo alla JSON mi mostra solo il valore di default e l'ID che è stata approvata nel corso della creazione del modello.

console.log(listtemplate.toJSON());

e restituisce:

{id: "template_one", title: "", steps: Array[0]} 

Il mio modello si presenta così (sto usando Require.js, da cui il modello è stato rinominato in ListTemplateModel sopra)

 
var Model = B.Model.extend({ 
     defaults: { 
      title: '', 
      id: 0, 
      steps: [] 
     }, 
     urlRoot: 'xxx' 
    }); 

Tutte le idee ?

Modifica @ La risposta di Amulya mi ha impostato sulla strada giusta e poi ho scoperto "allora". Spero che questo aiuti qualcuno che corre lo stesso problema:

listtemplate.fetch().then(function(){ 
    //update the view 
});
+0

@ La risposta di Amulya mi ha impostato sulla strada giusta e poi ho scoperto "allora". Spero che questo aiuti qualcuno che si imbatte nello stesso numero –

risposta

9

Il motivo forse perché non si attende per l'operazione di recupero per essere completato. Prova questo:

var listtemplate = new ListTemplateModel.Model({id: id}); 
listtemplate.fetch({ 
    success: function() { 
     // fetch successfully completed 
     console.log(listtemplate.toJSON()); 
    }, 
    error: function() { 
     console.log('Failed to fetch!'); 
    } 
}); 
+0

dolce !! sembra farlo. quindi dovrò avere la mia visualizzazione di rendering nella callback di successo? –

+0

sì hai ragione .. dovresti renderizzare la vista quando sul callback 'successo'! –

Problemi correlati