У меня есть коллекция Backbone и Marionette CollectionView, отображаемые в неупорядоченном списке. Я просто хочу, чтобы его можно было сортировать, поэтому мне нужно подождать, пока collectionView не будет помещен в DOM.

Я могу прослушивать событие, которое запускается при рендеринге коллекции, но я не знаю, как сделать то же самое, когда коллекция помещается в DOM.

var ContactView = Backbone.Marionette.CollectionView.extend({
    id : "contacts",
    tagName: "ul",
    itemView: UserView,
    initialize: function(){
        this.triggerMethod("collection:rendered", this);
    }
});

    var collection = new ContactView({ collection: myContacts });
    listenTo(collection, "collection:rendered",usersRendered);
    $("#content").append(collection.render().el);

    usersRendered: function(){
        $("#contacts").sortable(); // #contacts not in the DOM yet 
    }

Jsfiddle

0
cor 4 Апр 2014 в 13:54
У вас вопрос, как узнать, когда CollectionView был прикреплен к DOM?
 – 
Timigen
4 Апр 2014 в 22:05

1 ответ

Лучший ответ

Как вы писали, CollectionView и CompositeView запускают метод collection: rendered, а затем метод render после визуализации дочерних представлений. Я могу думать только о том, что вы можете выполнить то, что хотите, - это предоставить {el: '#contact'} при создании экземпляра ContactView. В качестве альтернативы, если вы добавляете view.el, вы можете вызвать .sortable () там, где вы это делаете. Однако первый подход лучше.

0
Roman 8 Апр 2014 в 10:47