Задать вопрос
lightarhont
@lightarhont
python/php developer

Создание нового вида или ререндер старого?

Несколько дней упорно сижу за бекбоном. Делаю 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 алертов".
  • Вопрос задан
  • 170 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
yesworld
@yesworld
Первое, ОЧЕНЬ МНОГО БУКВ!
Второе, че за новый метод: onceinitialize?
Третье, какая тут необходимость использовать then?
Все что хотитет реализовать после resta api, нужно использовать слушатели на колекции.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы