J'essaie d'ajouter la fonctionnalité à mon application afin que je puisse mettre à jour ma base de données, puis mettre à jour le DOM. La base de données est bien mise à jour, mais pas le DOM. Voici une partie de mon avis:Backbone: Mise à jour n'appelant pas la fonction de rappel
App.Views.Table = Backbone.View.extend({
tagName: 'span',
initialize: function(options) {
this.model.on('change', this.render, this);
this.model.on('update', this.remove, this);
this.template = this.options.template;
this.url = this.options.url;
},
events: {
'click .verify': 'verify',
'click .spam': 'spam',
'click .duplicate': 'duplicate'
},
verify: function(e) {
id = e.currentTarget.id;
table = new App.Models.Table({ id: id });
table.urlRoot = this.url;
table.fetch();
table.toJSON();
table.set('verified', 1);
table.save();
},
spam: function(e) {
...
},
duplicate: function(e) {
...
},
remove: function() {
this.$el.remove();
console.log('hello');
},
retrieveTemplate: function(model) {
return _.template($('#' + this.template).html(), model);
},
render: function() {
//console.log(this);
this.$el.html(this.retrieveTemplate(this.model.toJSON()));
return this;
}
});
Si je comprends bien, this.model.on('update', this.remove, this);
devrait appeler ma fonction de suppression lorsque save
est terminée. Mais le rappel ne se déclenche pas car je n'obtiens pas le console.log
et mon DOM n'est pas mis à jour. Qu'est-ce que je fais mal? J'ai suivi un tutoriel, mais tout fonctionne bien dans le tutoriel.
J'ai aussi essayé 'create' au lieu de' update' et toujours pas de chance. – sehummel
table.toJSON(); - Cette ligne de code ne fait rien BTW. Vous devez faire quelque chose avec le JSON qu'il retourne. – asgeo1