Несколько дней упорно сижу за бекбоном. Делаю ajax restapi комментарии
Совсем не получается ререндерить вид, например для того что-бы вывести коллекцию в обратном порядке и сфитчить при этом новые записи. Вчера целый день почти проломал голову над этим вопросом. Но так и не мог найти баг - почему отваливаются события моделей после ререндеринга. Говорят нужно использовать DelegateEvents, но чего-то не получается совсем никак... Даже если вручную через JQuery навешивать события. Ререндер происходит и всё вроде бы работает - но события отваливаются и всё тут...
Кто то пишет что ошибка в JQuery что там баг:
tbranyen.com/post/missing-jquery-events-while-rendering//Глобальный объект вида
var CommentsViewObj = new CommentsView({collection: CommentsCollectionObj});
CommentsViewObj.onceinitialize();
...
CommentsCollectionObj.fetch({data: {sortorder: sortparam}}).then(function(){
countercomments();
shcstfunc(0);
//Вставка вида
allcts.html(CommentsViewObj.render().$el);
});
...
Есть другой путь это создавать новый объект вида:
...
CommentsCollectionObj.fetch({data: {sortorder: sortparam}}).then(function(){
countercomments();
shcstfunc(0);
//Создание объекта вида каждый раз
var CommentsViewObj = new CommentsView({collection: CommentsCollectionObj});
//Вставка вида
allcts.html(CommentsViewObj.render().$el);
});
...
При каждой сортировке и фитче. Но в этом случае атрибуты старого вида остаются в памяти и паразитируют. А именно - прослушка событий. Может ещё что...
Варианты действий следующие:
Сделать по первому варианту - но тут что я только не пробовал сделать...
Сделать по второму варианту - но нужно как то по крайней мере сделать события так, что-бы события вызывались каждый раз, но только на новом виде. Потому что если человек нажмёт 5 раз на сортировку туда и обратно. То при добавлении сообщения будет "5 алертов".