Ng-animate не добавляет классы ng-enter и ng-leave

Это мой первый проект, работающий с Angular, и у меня есть некоторые проблемы с ng-animate. Я сделал пару уроков, и в учебниках у меня все работает нормально. Теперь я использую Angular для проекта, и я просто не могу заставить ng-animate работать должным образом. Такие классы, как «ng-enter» и «ng-leave», не добавляются к различным элементам.

Я сравнил все виды работающих скриптов со своим, но никак не могу понять, что я делаю не так.

Мой заголовок:

<link rel="stylesheet" href="css/app.css">

<script src="js/libraries/jquery-2.1.1.min.js"></script>
<script src="js/libraries/angular.js"></script>
<script src="js/libraries/angular-animate.js"></script>
<script src="js/libraries/angular-resource.js"></script>
<script src="js/libraries/angular-route.js"></script>

<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/services.js"></script>

Мой HTML:

<div class="view-container">
<div ng-view class="{{pageclass}} view-frame"></div>
</div>

Мой app.js

'use strict';

/* App Module */

var engineShowcaseApp = angular.module('engineShowcaseApp', [
  'ngRoute',
  'ngAnimate',
  'engineShowcaseController',
  'engineShowcaseServices'
]);

engineShowcaseApp.config(['$routeProvider',
  function ($routeProvider) {
    $routeProvider.
      when('/', {
        templateUrl: 'partials/main.html',
        controller: 'MainCtrl'
      }).
      when('/chapters/:chapterID', {
        templateUrl: 'partials/chapter.html',
        controller: 'ChapterCtrl'
      });
  } ]);

Мои контроллеры.js:

'use strict';

/* Controllers */

var engineShowcaseController = angular.module('engineShowcaseController', []);

engineShowcaseController.controller('MainCtrl', function ($scope, Main) {
    $scope.pageclass = "page-home";
    $scope.hotspots = Main.query();
});


  engineShowcaseController.controller('ChapterCtrl', function ($scope, $routeParams, Main) {
    $scope.pageclass = "page-chapter";
      $scope.chapter = Main.get({ chapterID: $routeParams.chapterID });
  });

HTML первой/главной страницы:

<div 
    ng-repeat="hotspot in hotspots" 
    class="hotspot hotspot-{{hotspot.id}}" 
    data-nextup="chapter-{{hotspot.id}}" 
    data-startframe="{{hotspot.startFrame}}" 
    data-endframe="{{hotspot.endFrame}}">

    <a  href="#/chapters/{{hotspot.chapterID}}">
        {{hotspot.label}}
    </a>
</div>

Если я прав, div с классом «горячая точка» должен получить классы «ng-enter» и «ng-leave»… но почему-то они этого не делают.

Может ли кто-нибудь помочь мне с этим? Что я делаю не так? Большое спасибо!!


person Frank Biemans    schedule 22.05.2014    source источник
comment
Где определяется ваша анимация?   -  person Pbrain19    schedule 27.05.2014
comment
Хороший вопрос! Забыл упомянуть эту часть. Для проверки я использовал довольно простой .ng-enter{ border: 1px solid red; } Так что при "входе" он должен показывать красную рамку, но это не так (я даже пытался добавить !important, чтобы убедиться, что он не будет отменен).   -  person Frank Biemans    schedule 28.05.2014
comment
Вы решили проблему?   -  person Marko Bonaci    schedule 30.06.2014
comment
Нет, решения не нашел :(   -  person Frank Biemans    schedule 01.07.2014


Ответы (2)



если вы используете Angular с версии 1.2, вы должны объявить анимацию класса CSS для элемента, который хотите анимировать, и вставить «ngAnimate» в свой модуль.

 var app = angular.module('myApp', ['ngAnimate']);
.element.ng-enter {
  transition: all linear 500ms;
  opacity: 0;
}
.element.ng-enter-active {
  opacity: 1;
}
.element.ng-leave {
  transition: all linear 500ms;
  opacity: 1;
  transform: translate3d(0, 0, 0);
}
.element.ng-leave-active {
  opacity: 0;
  transform: translate3d(100px, 0, 0);
}

person Renato Longobardi    schedule 22.12.2014
comment
НЕРАБОТАННАЯ ССЫЛКА - person Suresh Karia; 20.12.2016