Arhn - архитектура программирования

Переход с jQuery на AngularJS

У меня есть код jQuery, который немного устарел. Я пытаюсь перенести его на AngularJS. Как часть этого, у меня есть DIV, который выглядит следующим образом:

<div id="infoMsg" class="infoMsg"></div>

Иногда этот DIV скрыт. Иногда его видно. Все основано на действиях пользователя. Для переключения я бы использовал встроенные в jQuery методы отображения/скрытия, например:

$("#infoMsg", "#myPage").hide();
$("#infoMsg", "#myPage").show("blind");

Ключевым элементом здесь является компонент show("blind"). "слепой" эффект создает впечатление, что элемент скользит внутрь. Мой вопрос: как я могу сделать то же самое в мире AngularJS?

В настоящее время у меня есть флаг в моей области, определенный как $scope.showMessage = false. Моя идея состояла в том, чтобы переключить это, чтобы сделать div видимым или нет. Однако такой подход не дает мне приятного «слепого» эффекта.

04.04.2014


Ответы:


1

Angular предоставляет сервис $animation и директиву ngAnimate в модуле angular-animate.js (вы должны включить его отдельно после angular.js). Эти вещи предоставляют крючки, которые облегчают анимацию либо с помощью переходов CSS, анимации ключевых кадров CSS, либо старых циклов тайм-аута JS / модификации DOM аля jQuery.

Вам рекомендуется использовать CSS, так как вы повышаете производительность и упрощаете отделение и поддержку представления от разметки и кода приложения.

Во-первых, руководство разработчика по анимации, во-вторых, руководство по анимации Angular и, наконец, Документация по API для модуля ngAnimate.

Когда вы включаете модуль ngAnimate, некоторые директивы автоматически подключаются к анимации (например, ngShow, ngHide, ngRepeat и т. д.). По умолчанию они просто добавляют классы для запуска переходов CSS, и все, что вам нужно сделать, это убедиться, что у вас есть имена классов CSS, чтобы делать то, что вы хотите.

В случае ngShow (или ngHide) он добавит классы ng-hide, ng-hide-add, а затем ng-hide-add-active, чтобы начать переход при скрытии. Когда анимация завершится, останется только ng-hide. Когда вы покажете, он удалит ng-hide и добавит ng-hide-remove и ng-hide-remove-active. Звучит сложно, но это не плохо. Это довольно шаблонно. Эти состояния существуют для облегчения плавных переходов.

Для моего примера в этом фрагменте все, что я сделал, это вставил angular-module.js после angular.js и включил ngAnimate в мой модуль. Затем я добавил следующий CSS, чтобы сделать грубую слепую анимацию для элементов с селектором .fancy:

.fancy {
  padding:10px;
  border:1px solid black;
  background:red;
}

.fancy.ng-hide-add, .fancy.ng-hide-remove {
  -webkit-transition:all linear 5s;
  -moz-transition:all linear 5s;
  -o-transition:all linear 5s;
  transition:all linear 5s;
  display:block!important;
}

.fancy.ng-hide-add.ng-hide-add-active,
.fancy.ng-hide-remove {
  max-height: 0;
}

.fancy.ng-hide-add,
.fancy.ng-hide-remove.ng-hide-remove-active {
  max-height:100px;
}

Этот переход — всего лишь простой пример. Вы, вероятно, захотите улучшить его, так как max-height - это что-то вроде взлома. Рассмотрите возможность использования созданного для вас на Animate.css.

В любом случае, с CSS, все, что я делаю, это обычно использую ngShow, присваивая элементу класс fancy, чтобы применялись правильные переходы, когда он показывается и скрывается.

04.04.2014
  • Спасибо большое за вашу помощь. Подобные ответы таких людей, как вы, делают StackOverflow таким замечательным. 05.04.2014
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..