• 【转载】AngularJS监听路由变化


    一、Angular 路由状态发生改变时可以通过' $stateChangeStart '、' $stateChangeSuccess '、' $stateChangeError '监听,通过注入'$location'实现状态的管理。

    代码示例如下:

    function run($ionicPlatform, $location, Service, $rootScope, $stateParams) { 
      //路由监听事件 
      $rootScope.$on('$stateChangeStart', 
        function(event, toState, toParams, fromState, fromParams) { 
         console.log(event); 
         console.log(toState); 
         console.log(toParams); 
         console.log(fromState); 
         console.log(fromParams); 
         if (toState.name == "homePage") { 
          //获取参数之后可以调请求判断需要渲染什么页面,渲染不同的页面通过 $location 实现 
          if (toParams.id == 10) { 
           //$location.path();//获取路由地址 
           // $location.path('/validation').replace(); 
           // event.preventDefault()可以阻止模板解析 
          } 
         } 
        }) 
       // stateChangeSuccess 当模板解析完成后触发 
      $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) { 
      
      }) 
      
      // $stateChangeError 当模板解析过程中发生错误时触发 
      $rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) { 
      
      }) 
     }

    二、在页面渲染中 可通过' $viewContentLoading '和 ' $viewContentLoaded '监听页面渲染状态:渲染开始和渲染结束。

    在控制器中添加以下代码实现监听:

    // $viewContentLoading- 当视图开始加载,DOM渲染完成之前触发,该事件将在$scope链上广播此事件。 
    scope.$watch('$viewContentLoading',function(event, viewConfig){ 
     alert('模板加载完成前'); 
    }); 
    //$viewContentLoaded- 当视图加载完成,DOM渲染完成之后触发,视图所在的$scope发出该事件。 
    $scope.$watch('$viewContentLoaded',function(event){ 
      alert('模板加载完成后'); 
    });
  • 相关阅读:
    多组件共享-vuex
    在子组件中触发事件,传值给父组件-vue
    在父组件中,直接获取子组件数据-vue
    非父子组件通过事件传值-vue
    在父组件中,传值给子组件-vue
    MVVM
    Virtual DOM-渲染函数render -vue
    duilib入门简明教程 -- VS环境配置(2) (转)
    duilib入门简明教程 -- 前言(1) (转)
    【CDockablePane】关于CDockablePane
  • 原文地址:https://www.cnblogs.com/modou/p/5936457.html
Copyright © 2020-2023  润新知