Я пытаюсь выработать решения в течение нескольких часов - все дубликаты в SO, похоже, не работают для меня, поскольку они в большинстве своем рекомендуют либо попробовать разные версии ng-animate/ angular или добавление перехода/анимации в соответствующие классы, чтобы ngAnimate мог правильно обрабатывать свои тайминги.
Моя проблема в том, что все это работало, и у меня были все свойства в правильных местах, но теперь я переношу расширение Chrome для работы в инкапсуляции Shadow DOM.
Примечания:
- Тень DOM, вероятно, является виновником, но я не уверен, почему и как ее исправить. Это также может быть неактуальным или играть лишь незначительную роль в реальной проблеме (вероятно, это связано с плохой обработкой DOM в Shadow DOM + angular)
- Я загружаю свое приложение вручную позже в жизненном цикле расширения, так как он должен запускаться только после обратного вызова. Это может быть и виновником
Вот plunker - Я думаю, что у меня случай изолирован как можно больше. Нажатие на ссылки должно открывать/закрывать divs после них в анимации скольжения вниз/вверх соответственно. В настоящее время они сразу открываются.
Вот соответствующие стили:
.view-container {
position: absolute;
top: 70px;
bottom: 0;
background: white;
transition: all 0.4s 0.2s ease-in-out;
overflow-y: hidden;
// slide animation
&,
&.ng-hide-remove,
&.ng-hide-remove-active {
max-height: 500px;
}
&.ng-hide {
max-height: 0;
}
}
Вот шаблон:
<div ng-show="rchCtrl.view == 'flag'"
class="view-container">
<div ng-include="'/templates/extension/article-flag-form.html'"
ng-if="rchCtrl.view == 'flag'"
ng-controller="ArticleFlagCtrl as flg"
class="article-flag"></div>
</div>
Файл Bower:
"dependencies": {
"jquery": "^2.2.1",
"trackjs": "^2.8.3",
"angular": "^1.6.0",
"qtip2": "^2.2.1",
"ng-qtip2": "1.3.3",
"angular-ui-router": "^0.2.18",
"angular-cookies": "^1.6.0",
"angular-resource": "^1.6.0",
"bootstrap": "^3.3.7",
"angular-animate": "^1.6.0"
},
"resolutions": {
"angular": "1.6.6"
}
Мой раздел angular init:
app = angular.module(APP_NAME, ['template-cache', 'ui.router', 'ngCookies', 'geCommon', 'ngAnimate'])
// ...
angular.bootstrap(shadow.querySelector('#ge-ext'), [ APP_NAME ], { debugInfoEnabled: true })
angular.resumeBootstrap()
Но после этого промежуточные классы никогда не добавляются/удаляются, а анимация не работает. Скрыть/показать отображение немедленно.