查看动画在使用命名视图时不起作用

我有一个动画附加到未命名的UI视图。 当路由器看起来像这样时,这可以正常工作:

工作示例:

$stateProvider
  .state('home', {
    url: '/',
    templateUrl: 'app/main/main.html',
    controller: 'MainCtrl as main',
    resolve: {
      events: function(EventStore) {
        return EventStore.getAll();
      }
    }
  })
  .state('event', {
    url: '/event/:id',
    templateUrl: 'app/event/event.html',
    controller: 'EventCtrl as eventCtrl',
    resolve: {
      event: function(EventStore, $stateParams) {
        return EventStore.getEvent($stateParams.id);
      }
    }
  })

工作html示例:

<div ui-view class="main"></div>

但是,当我添加不同的意见,像这样的UI路由器:破碎的例子:

$stateProvider
  .state('home', {
    url: '/',
    views: {
      'main': {
        templateUrl: 'app/main/main.html',
        controller: 'MainCtrl as main',
        resolve: {
          events: function(EventStore) {
            return EventStore.getAll();
          }
        }
      },
      'navigation': {
        templateUrl: 'app/components/navbar/navbar.html',
        controller: 'NavbarCtrl as navbar',
      }
    }
  })
  .state('event', {
    url: '/event/:id',
    views: {
      'main': {
        templateUrl: 'app/event/event.html',
        controller: 'EventCtrl as eventCtrl',
        resolve: {
          event: function(EventStore, $stateParams) {
            return EventStore.getEvent($stateParams.id);
          }
        }
      },
      'aside': {
        template: '<aside-info ng-if="asideCtrl.displayed"></aside-info>',
        controller: 'AsideCtrl as asideCtrl'
      }
    }
  })

破碎的HTML:

<div ui-view="navigation"></div>
<div ui-view="main" class="main"></div>
<div ui-view="aside"></div>

路由和视图正常工作,但动画不适用。 第二个例子中动画会被忽略的任何想法?

编辑1:这是动画CSS。 但是,如果我删除3个不同的视图,这会正常工作。

.transition-background {
  position: fixed;
  width: 100%;
  height: 100vh;
}
.main {
  transition: all $totalSpeed  $animation .001s;
  overflow: hidden;
  &.ng-leave {
    overflow: hidden;
    .events {
      transition: display 0 $animation $speed;
    }
    .event-animate {
      transition: transform $speed2 $animation;
      position: fixed;
      overflow: hidden;
      top: 0;
      width: 100%;
      min-height: 100vh;
      transform: translate(0,0);
      transform: translate3d(0,0,0);
      top: 0;
      z-index: 4;
    }
    .transition-background {
      transition: transform $speed $animation $speed2;
      background: #68BDFF;
      position: fixed;
      top: 0;
      left: 0;
      transform: translate(0,0);
      transform: translate3d(0,0,0);
      animation-direction: alternate;
      width : 100%;
      z-index: 3;
    }
  }

  &.ng-leave-active {
    .events {
      display: none;
    }
    .event-animate {
      transform: translate(0,100vh);
      transform: translate3d(0,100vh,0);
    }
    .transition-background {
      transform: translate(0,-100vh);
      transform: translate3d(0,-100vh,0);
    }
  }

  &.ng-enter {
    overflow: hidden;
    .event-animate {
      transition: transform $totalSpeed $animation $speed;
      position: fixed;
      overflow: hidden;
      width: 100%;
      min-height: 100vh;
      transform: translate(0,100vh);
      transform: translate3d(0,100vh,0);
      animation-direction: normal;
      z-index: 4;
    }
    .transition-background {
      transition: transform $speed $animation;
      background: #68BDFF;
      position: fixed;
      top: 0;
      left: 0;
      transform: translate(0,-100vh);
      transform: translate3d(0,-100vh,0);
      width : 100%;
      z-index: 3;
    }
  }

  &.ng-enter-active {
    .event-animate {
      transform: translate(0,0);
      transform: translate3d(0,0,0);
    }
    .transition-background {
      transform: translate(0,0);
      transform: translate3d(0,0,0);
    }
  }
}

我已经创建了一对夫妇来试图确定你面临的问题。 这是第一次重新创建你的第一个情况,你有一个未命名的ui-view 。 如果点击按钮进入事件状态,则可以看到动画CSS在解析完成时(2秒后)按预期应用。

这是第二次使用你的第二个设置与3个命名的UI视图。 你可以点击按钮来改变状态,你也会看到这个动画也适用于这种情况。

我所做的主要改变是你的状态配置中的解析对象应该与状态相关,而不是在视图内。


你可以尝试以下吗?

在app / main / main.html中,用它包装它的内容

<div class="main">
    ...content of main.html...
</div>

然后删除ui-view中的主类,这样你只会有这个

<div ui-view="navigation"></div>
<div ui-view="main"></div>
<div ui-view="aside"></div>

我猜测,当ui-view生成时,主类将被删除。 现在,不要依赖ui-view包装器,您可以在main.html中获取主类

让我知道它是否有帮助

链接地址: http://www.djcxy.com/p/28603.html

上一篇: view animation not working when using named views

下一篇: gunicorn: Can't connect to gunicorn.sock