Подтвердить что ты не робот

Marionette ItemView, как переориентировать модель на изменение

Я использую механизм шаблонов Handlebars.
поэтому, у меня есть модель:

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

затем Marionette ItemView:

Marionette.ItemView.extend({
        template : templates.client,
        initialize: function () {
            this.model.on('change', this.render, this);
        },
        onRender: function () {
            console.log(this.model.toJSON());
         }      
    });

а затем я называю все как:

new View({
    model : new Model({id:id})
        })

и он сразу же дает мне представление, и это круто. Но после того, как модель взяла данные, она вызывает "изменение", поэтому я вижу в сериализованной модели консоли дважды, и я вижу, что в первый раз пустая модель, а затем заполнила ее.

Но представление не обновляется.

Как я могу это исправить?

P.S. Я понимаю, что я могу вызвать метод рендеринга при извлечении сделанного обратного вызова. Но я также нуждаюсь в этом для дальнейших действий, когда пользователь изменит модель.

4b9b3361

Ответ 1

На самом деле, Магистраль и Марионетка достаточно умен, чтобы сделать это.
Проблема была в шаблоне и данных, так как я нашел еще один вопрос. Итак, я снова проверил все и получил результат.

Ответ 2

В представлении вы можете использовать следующий код

    modelEvents: {
        'change': 'render'
    }

вместо

   initialize: function () {
        this.model.on('change', this.render, this);
    },
    onRender: function () {
        console.log(this.model.toJSON());
     }