web-dev-qa-db-fra.com

Marionette ItemVoir comment restituer le modèle lors d'un changement

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.

21
Vadim Ivanov

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.

3
Vadim Ivanov

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());
     }
45
Fizer Khan