Sono n00b in BackboneJS/RequireJS e sto sviluppando un'app Web che utilizza un'API RESTful. così ho un modello come questo:Backbone.js - Come salvare il modello per modulo e inviare al server
modelli/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;
});
una collezione: collezioni/pets.js
define([
'backbone',
'models/pet'
], function(Backbone, PetModel){
var PetsCollection = Backbone.Collection.extend({
url: 'http://localhost:3000/pets',
model: PetModel,
});
return PetsCollection;
});
e una vista che rende un modulo per aggiungere nuovi modelli (Forse è possibile un altro modo più elegante) visualizzazioni/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;
});
Così quando invio il modulo non invio alcun dato al server. Non so come aggiustarlo. Qualche idea? Grazie in anticipo!
Perché non dovresti eseguire il debug di ciò che accade all'interno di Backbone? Nella maggior parte dei casi è il modo più veloce per risolvere i problemi (come con qualsiasi prodotto open source). –
Sì, ho eseguito il debug con console.log in chrome e la variabile "pet_data" mostra l'oggetto JSON completo serializzato del modulo ma il metodo "save" non funziona :( –
Grazie @ J-unior ho notato che non debug in server-side e ho già trovato il bug. Sono felice ora: P –