AngularJS监听路由的变化示例代码
话不多说,我们下面直接来看实现的示例代码
【一】Angular路由状态发生改变时可以通过'$stateChangeStart'、'$stateChangeSuccess'、'$stateChangeError'监听,通过注入'$location'实现状态的管理
代码示例如下:
functionrun($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){
})
}
【2】在页面渲染中可通过'$viewContentLoading'和'$viewContentLoaded'监听页面渲染状态:渲染开始和渲染结束。
(在控制器中添加以下代码实现监听)
//$viewContentLoading-当视图开始加载,DOM渲染完成之前触发,该事件将在$scope链上广播此事件。
scope.$watch('$viewContentLoading',function(event,viewConfig){
alert('模板加载完成前');
});
//$viewContentLoaded-当视图加载完成,DOM渲染完成之后触发,视图所在的$scope发出该事件。
$scope.$watch('$viewContentLoaded',function(event){
alert('模板加载完成后');
});
总结
以上就是这篇文章的全部内容,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。