J'ai donc travaillé avec Backbone.js de base pour créer une page de démonstration simple qui est un gestionnaire d'utilisateur de base. Je cours la même fonction si je crée (POST) ou met à jour (PUT) l'information d'un utilisateur. Les requêtes POST et PUT sont toutes deux réussies (appel de la fonction "succès") mais seule la commande PUT déclenchera le routeur, la requête POST ne déclenchera pas la même ligne de code alors qu'elle déclenchera la fonction de succès.Backbone.js routeur déclenchant sur mettre, pas sur poste
Ci-dessous le code de mes événements. La fonction saveUser prend en charge les requêtes PUT et POST, mais le routeur en cas de réussite est uniquement déclenché à partir d'une requête PUT réussie et non d'une requête POST réussie (même si les deux réussissent à mettre à jour la base de données).
events: {
'submit .edit-user-form': 'saveUser',
'click .delete': 'deleteUser'
},
saveUser: function (ev) {
var userDetails = $(ev.currentTarget).serializeObject();
var user = new User();
reply = user.save(userDetails, {
success: function(){
router.navigate('', {trigger: true});
},
error: function(){
$("#editError").toggle();
$("#editError").html("Error:<br/>"+reply.status+" : "+reply.statusText+"<hr/>");
}
});
return false;
},
deleteUser: function (ev){
$.ajaxSetup({
headers: {
'method':"DeleteUser"
}
});
reply = this.user.destroy({
success: function(){
router.navigate('', {trigger: true});
},
error: function(){
$("#editError").toggle();
$("#editError").html("Error:<br/>"+reply.status+" : "+reply.statusText+"<hr/>");
}
})
return false;
}
Voici le code du routeur:
var Router = Backbone.Router.extend({
routes:{
'new': 'editUser',
'edit/:id': 'editUser',
'': 'home'
}
});
var router = new Router();
//ROUTES
router.on('route:home', function(){
alert("1");
userList.render(),
editUser.render({});
});
router.on('route:editUser', function(id){
userList.render();
editUser.render({id: id});
});
//NECESSARY
Backbone.history.start();`
Toute aide serait appréciée!
Merci!
Avez-vous essayé de faire un console.log (réponse) sur votre fonction saveUser et voir ce qu'il renvoie lorsque vous faites un POST? –
"La requête POST ne déclenche pas la même ligne de code alors qu'elle déclenche la fonction de réussite." Je suis confus. Donc, si vous ajoutez 'console.log (" Hi! ");' Dans le callback 'success', obtiendriez-vous" Hi! " sur les deux POST et PUT? – Lukas
J'ai essayé la consignation de console et Lukas est correct. Il se connecte dans la console comme il est réussi mais il ne déclenche pas réellement le routeur. :/ – MelArlo