Как использовать CanJS с VelocityJS?

Я использую CanJS (со StealJS) для создания приложения викторины, и у меня есть компонент quizz-question, который отображается для каждого вопроса!

Интересно, как делать переход с скорость каждый раз, когда компонент quizz-question удаляется для ответа на вопрос и вставляется для нового вопроса?

Любая помощь приветствуется!

Какую версию CanJS вы используете? Это может не повлиять на ответ, но я хочу начать с правильной версии для JSBin.

air_hadoken 15.05.2018 01:04

CanJS 4.x спасибо :)

Cherif BOUCHELAGHEM 15.05.2018 11:35

В конечном итоге это повлияло на ответ, по крайней мере, на настройку JSBin. :)

air_hadoken 16.05.2018 04:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
94
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ключевым элементом использования переходов при изменении данных является то, что переход должен завершиться перед удалением элемента из модели DOM (что приведет к немедленному удалению элемента из отображения).

Насколько мне известно, CanJS не имеет механизма ожидания процесса перед удалением узлов, поэтому подходящим обходным путем является наличие узла, который не удаляется при изменении содержимого. Вы можете структурировать разметку внутри этого узла, но переход скорости должен произойти на постоянном узле, чтобы переход был успешным.

Для примера постепенного появления и исчезновения при настройке содержимого для помещения в контейнер перехода следует использовать асинхронный установщик (с аргументами val и resolve), чтобы переход работал правильно. Сначала исчезните (и используйте возвращенное обещание для ожидания), затем обновите разметку с новым содержимым (используя resolve()), затем постепенно проявитесь. Я сделал JSBin, который демонстрирует эту концепцию, хотя содержимое внутри перехода очень просто в демо.

https://jsbin.com/lesagebomu/edit?html,js,output

В случае компонента quizz-question вы хотите отобразить весь компонент внутри div в fade-in. Вероятно, также есть способ обобщить это на компонент более высокого порядка, например, <div class = "fade-in"><content /></div> и некоторые манипуляции с данными.

Большое спасибо за подробности и jsbin, я очень ценю это :)

Cherif BOUCHELAGHEM 16.05.2018 09:17

Для анимации событий, отличных от удаления элемента, я бы использовал привязки событий on:event:by:obj = "animate()" для запуска анимации.

Justin Meyer 17.05.2018 19:50

Другой способ сделать это - отправлять события для добавляемых и удаляемых элементов, а затем прослушивать эти события в представлении:

    <li on:click = "../removeQuestion(question)"
        on:removing:by:question = "fadeOut()"
        on:inserting:by:question = "fadeIn()">{{question.name}}</li>

Вы можете увидеть это здесь: https://jsbin.com/lepuxaq/edit?html,js,output

Другие вопросы по теме

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

Как использовать настраиваемую кнопку для отправки на адрес редактирования JQGrid?
Соответствие регулярному выражению Javascript, включая группу без захвата
Как реализовать метод карты для переменной, содержащей объект json, с помощью javascript
Как я могу превратить эту анонимную функцию в именованную функцию, чтобы я мог переместить ее во внешний файл JS для возможного повторного использования
Могу ли я сказать серверу nodeJs генерировать только динамический HTML (в то время как nginx отправляет статические данные), а затем автоматически отправлять клиенту?
Что я должен вернуть, если объект не найден в TypeScript в строгом режиме?
Получение строкового вывода JSON.stringify и копирование в JSON.parse дает неожиданный токен в JSON
Общая логика повтора обещания
Как я могу добавить codpen JS и AJax на мою единственную страницу wordpress
ProperDivisors, использующие цикл For Current Code Breaks Chrome