0

Я бег следующего вида:Магистральных пожары изменения коллекции событий, но ничего не меняется в представлении

app.OrganisationTab = Backbone.View.extend({ 

el : "#organisations", 

template : _.template($("#tpl-groups-list").html()), 

events : { 
    "click .js-edit-group" : "editGroup" 
}, 

initialize: function() { 

    this.listenTo(this.collection, 'change', this.change); 

    var that = this; 



    this.collection.fetch({ 
     success: function() { 
      that.render(); 
     } 
    }) 
}, 

change: function() { 
    //this.$el.empty(); 
    console.log("collection has changed"); 
}, 

render:function() { 
    this.$el.empty(); 
    this.addAll(); 
    return this; 
}, 

addAll: function() { 

    this.collection.each(this.addOne, this); 

}, 

addOne: function(model) { 

    var view = new app.GroupEntry({ 
     model: model 
    }); 

    this.$el.append(view.render().el); 

}, 

editGroup: function(e) { 

    e.preventDefault(); 
    var elm = $(e.currentTarget), 
     that = this; 

    $('#myModal').on('hidden.bs.modal', function() { 
     $('.modal-body').remove(); 
    }); 

    var organisation = this.collection.findWhere({ id : String(elm.data('groupid')) }); 

    var members = organisation.get('users'); 
    organisation.set('members', new app.UserCollection(members)); 

    var projects = organisation.get('projects'); 
    organisation.set('projects', new ProjectCollection(projects)); 

    var orgForm = new app.createOrganisationForm({ 
     model : organisation, 
    }); 

    $('#myModal').modal({ 
     backdrop: 'static', 
     keyboard: false 
    }); 

} 

}); 

Этот вид вызывает новый вид, и в том, что я могу изменить модель сохранить его (посылает PUT), и я могу попасть в свою консоль, collection has changed. Если I console.log этот сборник, я вижу, что коллекция изменилась. Если я попытаюсь перерисовать страницу, то все, что я вижу, это модели, которые были без изменений.

Зачем это происходит, когда отчет ясно меняется, когда он запускает события, и я вижу это, когда я регистрирую коллекцию?

+0

ли вы вы убедитесь, что данные фактически сохраняются в базе данных? Это мое первое предположение. – Gohn67

+0

Это, безусловно, сохраняется в базе данных, поскольку обновление страницы приводит к новым данным. – Udders

+0

А, ок. Я неправильно понял. Я подумал о повторной обработке, означало перезагрузку. – Gohn67

ответ

0

После прочтения вашего комментария:

Нет извинит об изменении коллекции я пытаюсь запустить визуализации(), который должен очистить контейнер, и добавить все модели ... но мне кажется, чтобы сделать старый сбор снова.

Вы получаете эту проблему, потому что вы перекрывая success обработчик для fetch вызова. Этот обратный вызов успеха запускается до того, как модели будут помещены в коллекцию. Вы должны прослушать sync event, если хотите рендеринг после того, как коллекция была sync, хронология с сервером (модели обновляются после извлечения).

Update инициализируется:

initialize: function() { 
    this.listenTo(this.collection, 'change', this.change); 
    this.listenTo(this.collection, 'sync', this.render); 
    this.collection.fetch(); 
},