2011-12-12 3 views
6

J'ai généré une liste mais j'ai des problèmes d'enregistrement sur le modèle.modèle backbone enregistrer l'exemple

createOnEnter: function(e) { 
    var self = this; 
    var input = this.$("#new-title"); 
    var input2 = this.$("#new-content"); 
    //var msg = this.model.isNew() ? 'Successfully created!' : "Saved!"; 
    if (!input || e.keyCode != 13) return; 
    Mynote.save({title: this.input.val(), content: this.input2.val() }, { 
     success: function(model, resp) { 
      new LibraryView.Notice({message: msg}); 

      self.model = model; 
      self.render(); 
      self.delegateEvents(); 

      Backbone.history.saveLocation('mynotes/' + model.id); 
     }, 
     error: function() { 
      new LibraryView.error(); 
     } 

    }); 

    return false; 

}, 

Est-ce que je l'ai fait correctement? est dans la même vue pour l'URL de collection ou 'index' ou dois-je spécifier un itinéraire différent pour le nouveau modèle?

Répondre

8

Au lieu Mynote.save vous devriez avoir une ligne de quelque chose qui:

var note = new Mynote(); 
note.save({ tile: ..., content: .. }, { success: ..., error: ..}); 

Voir http://documentcloud.github.com/backbone/#Model-save

+2

Plus important encore, il faut instancier et créer un modèle avant qu'il ne puisse le sauver. Vous avez défini le modèle, mais vous n'en avez pas de copies. le 'new Mynote()' va créer une instance de 'Mynote' qui peut ensuite être utilisée pour stocker des données. – tkone

+0

Rien dans son code ne dit que Mynote n'a pas encore été instancié en dehors de la portée de cette fonction, mais c'est un bon conseil pour les gens de toute façon! :) –