当没有变化时捕获UI路由器的状态变化

时间:2015-05-13 09:52:56

标签: angularjs angular-ui-router state

我想使用UI路由器$stateChangeStart来捕获从' / foo / bar'到' / foo / bar':

$rootScope.$on('$stateChangeStart', function() {
    // ...
});'

基本上,我想在点击当前状态的链接时捕获,这样我就可以强制重新加载。

1 个答案:

答案 0 :(得分:0)

仅当浏览器网址发生变化时,

$stateChangeStart事件才会触发。在重定向到相同状态时,State不会有任何变化。无法跟踪与前一个相同的更改状态。这就是为什么你想要的东西,使用$stateChangeStart事件无法实现。

我建议你创建一个你自己的指令,它会在点击它时触发检查状态的代码。

<强>指令

.directive('uiSref', function($state){
  return {
    link: function(scope, element, attr){
      element.on('click', function(event){
        if(attr.href.substring(1, attr.href.length) === $state.current.url)
           //from here you can track state haven't changed 
           console.log("Success")
      });
    }
  }
})

Example Plunkr

如果您只想重新加载控制器,那么您只需在状态级别提及reload: true

这不是一个合适的方法。它的工作来自我。