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

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

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект