将状态类应用于ui视图以允许使用不同的ng动画

威廉森

我需要根据的当前状态应用不同的动画ui-view接下来是这个问题。

我有以下代码(编辑:请参阅plunker Preview

<section ui-view ng-class="stateClass"></section>

stateClass 应用于每个控制器,例如:

.controller('loginController', function($scope, $state) {
  // Set state class name
  $scope.stateClass = 'slide-left';
  console.log($scope);

这可以正常工作,并且可以很好地添加类-但动画不会启动。

如果我将ui-view代码更新为:

<section ui-view class="slide-left"></section>

使用硬编码的类,它可以工作(但现在我不能应用其他动画)。

之后会ng-class被添加ng-enter吗?有人可以建议如何实现动画吗?

编辑>>奇怪的是,ng-leave动画效果很好。但是CSS仍然不适用于ng-enter

克塞布

将以下指令添加到您的ui-view中state-class

.directive('stateClass', ['$state', function($state) {
    return {
        link: function($scope, $element, $attrs) {
            var stateName = $state.current.name || 'init',
                normalizedStateName = 'state-' + stateName.replace(/\./g, '-');
            $element.addClass(normalizedStateName);
        }
    }
}]);

在上ng-enter,对于新创建的元素,它将添加当前状态名称(UI视图转换到的状态)。对于将要消失的元素,状态保持与之前创建的状态相同。

例如:

mainmodal状态的转换

阶段1:main状态为有效:

<ui-view state-class class="state-main ng-scope"></ui-view>

阶段2:运行 $state.go('modal');

<ui-view state-class class="state-modal ng-animate ng-enter ng-enter-active"></ui-view>
<ui-view state-class class="state-main ng-animate ng-leave ng-leave-active"></ui-view>

阶段3:modal状态为活动

<ui-view state-class class="state-modal"></ui-view>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用不同的镜头依次将多个功能应用于对象

将动画顺序应用于多个视图

使用不带类的Bootstrap 3将表单CSS应用于所有输入

根据状态将CSS类应用于特定元素

将jQuery UI对话框应用于类

如何将列表视图应用于详细视图动画,例如android中的play store?

将延迟应用于动画jquery

将CSS动画应用于div

如何使用AngularJS将类动态应用于div

使用*匹配将规则应用于多个类

如何使用JS或jQuery将类应用于列表项,而无需按id抓取并保持活动状态?

将条件应用于不同的组

如何将转换应用于相同的元素但处于不同的状态:悬停

将类别应用于框架类

使用SASS将不同的动画应用于具有相同类的元素

使用不带纹理的glsl将发光效果应用于正方形

根据条件将CSS类应用于ng-repeat内的HTML元素

ng-class无法将CSS类应用于元素

如何将CSS类应用于ng-repeat中的选定行

将依赖注入应用于抽象类C#的不同实现

Java 8为什么将注释不同地应用于派生类?

将样式应用于具有不同编号的CSS类

如何将函数(动画)仅应用于具有相同类名的许多类中的选定类

kendo ui angular2 grid-如何将类应用于网格行

是否可以将动画应用于使用纯 css 动态附加的文本?

如何使用animated.css将动画同时应用于两个元素

使用js手动将跳动动画应用于div元素

将CSS动画应用于特定元素,而不应用于其子元素

在AngularJS中使用ng-class应用不同性质的多个CSS类名称