【问题标题】:Fire a callback when route is changed (animations, loaders etc) in AngularJS在 AngularJS 中更改路由(动画、加载器等)时触发回调
【发布时间】:2013-02-15 08:34:20
【问题描述】:

我对 AngularJS 比较陌生。

当路由改变时,ng-view 改变内容。 我希望能够做的是在路线改变时挂钩某些行为。

  1. 我希望能够为我们的视图设置动画 离开(淡出,向左滑动)和下一个视图时 随时可用,淡入淡出并将视图滑入。 这可以通过在路由加载时向 body 添加一个类,并在路由更改成功时删除一个类来实现

  2. 我希望能够将视图堆叠在 当前视图,因此当一个向前移动时,下一个视图是 首先加载到当前视图的右侧,然后视口向右滑动,因此当前视图几乎滑出 视图,然后下一个滑入视图(windows phone 像画布外导航)

$routeProvider 是否适合执行此操作?

有没有大师可以为我指明正确的方向?

【问题讨论】:

    标签: angularjs angularjs-directive


    【解决方案1】:

    经过更多研究,为此目的触发了一些事件。

    $scope.$on('$routeChangeStart', function(scope, next, current){
       //...
    });
    
    $scope.$on('$routeChangeSuccess', function(scope, next, current){
       //...
    });
    

    如果问题是为某些东西设置动画(例如路线更改),我建议使用 ngAnimate。 阅读更多关于它的信息here

    【讨论】:

    • 我们看到,当 '$routeChangeSuccess' 触发时,DOM 通常没有被路径模板完全水合。
    【解决方案2】:

    您可以在根范围级别安装监视以捕捉位置变化:

    $rootScope.$watch(function {
       return $location.path();
       },  
       function(newValue, oldValue) {  
          if (newValue != oldvalue) {
             // here you can do your tasks
          }
          else {
          }
       },
       true);
    

    【讨论】:

    • 感谢您的回答,但我想知道如何在任何 div 或例如 ng-view 上制作动画。例如,向 body 添加一个类,并在加载完成后将其删除,以在状态之间进行一些基本的 CSS 转换的最佳方法是什么?
    • 看来你自己找到了答案,无论如何抱歉帮不了你,我对网页界面效果了解不多
    猜你喜欢
    • 1970-01-01
    • 2016-01-23
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多