Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Нужно событие ns-model-before-invalidate у ns.Model #612

Open
chestozo opened this issue Jul 12, 2016 · 15 comments
Open

Нужно событие ns-model-before-invalidate у ns.Model #612

chestozo opened this issue Jul 12, 2016 · 15 comments
Labels

Comments

@chestozo
Copy link
Member

Кажется, полезное событие.
Пример полезного кейса: у нас есть модель-коллекция типа "бесконечный список" с подгрузкой по скроллу.
Когда мы хотим её перезагрузить "по-жёсткому" мы сохраняем число элементов коллекции и запрашиваем ровно столько item-ов.

Было бы удобно сохранять число элементов в коллекции именно по событию типа ns-model-before-invalidate.

@vitkarpov
Copy link
Member

по-жёсткому

👍

@vitkarpov
Copy link
Member

А сохранять это дело перед тем как инвалидировать модельку нельзя? Или хочется типа декларативно сделать?

@vitkarpov
Copy link
Member

vitkarpov commented Jul 12, 2016

Когда мы хотим её перезагрузить "по-жёсткому"

Вот это что за момент — как мы ее хотим перезагрузить, сделать руками invalidate?

@chestozo
Copy link
Member Author

chestozo commented Jul 12, 2016

Сразу на твои 1 и 3 комменты ответ:
по-жёсткому это значит
oldModel.setData(newModelInstance.getData())
:)

Можно конечно везде, где у модели вызывается invalidate рядом вызвать saveModelsCount, но: не везде можно подобраться + удобно один раз написать такое внутри секции events при декларации модели.

@vitkarpov
Copy link
Member

Ага, понял тебя. Нормальная тема.

@vitkarpov
Copy link
Member

Добавим в этом таске ns-view-before-hide, раз есть кейс?

@vitkarpov
Copy link
Member

Только эти события будут выбиваться из общей логики вызова пачками — нужно сделать trigger непосредственно перед скрытием ноды, а не класть ссылку на вьюшку в очередь, чтобы дернуть все события после.

@chestozo
Copy link
Member Author

Ну вот да, возможно проседание производительности..

@vitkarpov
Copy link
Member

С другой стороны, раз тебе нужно что-то сделать до скрытия ноды — предполагается, что это что-то синхронное.

@chestozo
Copy link
Member Author

Не факт, но допустим )

@vitkarpov
Copy link
Member

Ну, я к тому, что если тебе нужны только данные от ноды, типа offsetHeight — тогда надо в этом обработчике просто взять их и записать куда-то, легкая операция.

А на ns-view-hide уже выполнять свои адские рассчеты.

@vitkarpov
Copy link
Member

Но про эту особенность нужно будет помнить, конечно

@iEgit
Copy link
Collaborator

iEgit commented Jul 14, 2016

С другой стороны, раз тебе нужно что-то сделать до скрытия ноды — предполагается, что это что-то синхронное.

Самое очевидное применение перед скрытием view - это анимация, которая не может быть синхронной.

@vitkarpov
Copy link
Member

Не, этот обработчик просто дает тебе возможность подхачиться к моменту перед скрытием — программа в любом случае будет дальше выполняться, после выполнения этого обработчика, не важно что он там будет делать: если вернет промис, то всем пофигу.

Поэтому это скорее не про анимации все-таки.

@chestozo
Copy link
Member Author

Да, анимации мы тут не поддержим, это просто lifecycle hook.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants