Backbone.js - Comment faire pour enregistrer le modèle en forme et le poste de serveur

Je suis n00b en BackboneJS/RequireJS et je suis le développement d'une application web qui utilisent une API RESTful.
J'ai donc un modèle comme celui-ci:

models/pet.js

define([
  'backbone'
], function(Backbone){

var PetModel = Backbone.Model.extend({

    urlRoot: 'http://localhost:3000/pet',
    idAttribute: '_id',

    defaults: {
        petId: "",
        type: "",
        name: "",
        picture: "",
        description: "",
        breed: "",
        size: "",
        sex: "",
        age: "",
        adopted: false,
    }
});

  return PetModel;
});

une collection: collections/pets.js

define([
  'backbone',
  'models/pet'
], function(Backbone, PetModel){

    var PetsCollection = Backbone.Collection.extend({
    url: 'http://localhost:3000/pets',
    model: PetModel,
});

  return PetsCollection;
});

Et une vue qui rend un formulaire pour ajouter de nouveaux modèles (c'est Peut-être possible un autre moyen plus élégant)
views/petAddNew.js

define([
'jquery',
'backbone',
'models/pet',
'collections/pets',
'text!templates/pet/addNew.html'
], function($, Backbone, PetModel, PetsCollection, petAddNewTemplate){
var PetAddNewView = Backbone.View.extend({
el: $('#formAdd'),
template: _.template(petAddNewTemplate),
events: {
'click #add'        : 'submitAdd',
},
initialize: function() {
this.model = new PetModel();
this.collection = new PetsCollection();
_.bindAll(this, 'submitAdd');
},
render: function() {
var view = this;
view.$el.html( view.template );
return view;
},
submitAdd: function(e) {
//Save Animal model to server data
e.preventDefault();
var pet_data = JSON.stringify( this.getFormData( this.$el.find('form') ) );
this.model.save(pet_data);
this.collection.add(this.model);
return false    
},
//Auxiliar function
getFormData: function(form) { 
var unindexed_array = form.serializeArray();
var indexed_array = {};
$.map(unindexed_array, function(n, i){
indexed_array[n['name']] = n['value'];
});
return indexed_array;
},
});
return PetAddNewView;
});

Alors quand j'ai envoyer le formulaire, je ne poste pas toutes les données du serveur. Je ne sais pas comment le résoudre.
Des idées? Merci à l'avance!

  • Pourquoi ne pas vous déboguer ce qui se passe à l'intérieur de la Dorsale? Dans la plupart du temps c'est le moyen le plus rapide pour résoudre vos problèmes (comme avec tout produit open source).
  • Ouais, j'ai débogué avec la console.journal de dans le chrome et le var "pet_data" le JSON en objet sérialisé de la forme, mais la méthode "enregistrer" ne fonctionne pas 🙁
  • Merci @Junior que j'ai remarqué qui n'a pas de débogage du serveur-côté et j'ai déjà trouvé le bug. Je suis heureux maintenant 😛