J'utilise le moteur de modèle de guidon.
donc, j'ai le modèle:
Backbone.Model.extend({
urlRoot: Config.urls.getClient,
defaults: {
contract:"",
contractDate:"",
companyTitle:"",
contacts:[],
tariff: new Tariff(),
tariffs: [],
remain:0,
licenses:0,
edo:""
},
initialize:function(){
this.fetch();
}
});
puis Marionette ItemView:
Marionette.ItemView.extend({
template : templates.client,
initialize: function () {
this.model.on('change', this.render, this);
},
onRender: function () {
console.log(this.model.toJSON());
}
});
puis j'appelle tout comme:
new View({
model : new Model({id:id})
})
et ça me rend immédiatement une vue et c'est cool. Mais après que le modèle ait récupéré les données, il déclenche le "changement", donc je vois dans le modèle sérialisé de la console deux fois, et je vois pour la première fois le modèle vide puis rempli.
Mais, la vue n'est PAS mise à jour.
Comment puis-je le réparer?
P.S. Je comprends que je peux appeler une méthode de rendu lors d'un rappel de récupération. Mais j'en ai également besoin pour d'autres actions, lorsque l'utilisateur changera de modèle.
En fait, Backbone et Marionette sont assez intelligents pour le faire.
Le problème était dans le modèle et les données tels que je les ai trouvés autre question . J'ai donc tout revérifié et obtenu le résultat.
Dans la vue, vous pouvez utiliser le code suivant
modelEvents: {
'change': 'render'
}
au lieu de
initialize: function () {
this.model.on('change', this.render, this);
},
onRender: function () {
console.log(this.model.toJSON());
}