Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在没有更改时捕获UI路由器的状态更改_Angularjs_Angular Ui Router_State - Fatal编程技术网

Angularjs 在没有更改时捕获UI路由器的状态更改

Angularjs 在没有更改时捕获UI路由器的状态更改,angularjs,angular-ui-router,state,Angularjs,Angular Ui Router,State,我想使用UI路由器的$stateChangeStart捕获从“/foo/bar”转换到“/foo/bar”时的状态更改: $rootScope.$on('$stateChangeStart', function() { // ... });' 基本上,我希望捕获当前状态的链接何时被单击,以便强制重新加载。$stateChangeStart事件仅在浏览器url更改时触发。重定向到相同状态时,状态不会发生任何更改。无法跟踪更改后的状态与前一个状态相同。这就是为什么使用$stateChang

我想使用UI路由器的$stateChangeStart捕获从“/foo/bar”转换到“/foo/bar”时的状态更改:

$rootScope.$on('$stateChangeStart', function() {
    // ...
});'
基本上,我希望捕获当前状态的链接何时被单击,以便强制重新加载。

$stateChangeStart事件仅在浏览器url更改时触发。重定向到相同状态时,状态不会发生任何更改。无法跟踪更改后的状态与前一个状态相同。这就是为什么使用$stateChangeStart事件无法实现您想要的

我建议您创建自己的指令,该指令将在单击时触发检查状态的代码

指示

若您只想重新加载控制器,那个么您可以简单地在状态级别提到reload:true


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

你能用链接和你的州定义添加代码吗。我如何利用链接并不重要。我希望能够捕获应用程序是否尝试导航到当前状态并重新加载所有内容。if元素.attr'ui-sref'==$state.current.id效果更好,因为$state.current.url只返回/bar部分,而不返回/foo。谢谢
.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")
      });
    }
  }
})