Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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_Ionic Framework_Angular Ui Router - Fatal编程技术网

Angularjs ui路由器恢复预防事件

Angularjs ui路由器恢复预防事件,angularjs,ionic-framework,angular-ui-router,Angularjs,Ionic Framework,Angular Ui Router,我希望用户在导航到另一个页面时得到通知,必须保存更改。 因此,我监听UI-ROUTER的stateChangeStart事件。 我需要阻止要阻止的事件,即下一页在保存值之前不加载这些值。当我通过$state.go手动导航到所需页面时。。我一直挂在stateChangeStart事件的循环中 $scope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){ event.pre

我希望用户在导航到另一个页面时得到通知,必须保存更改。 因此,我监听UI-ROUTER的stateChangeStart事件。 我需要阻止要阻止的事件,即下一页在保存值之前不加载这些值。当我通过$state.go手动导航到所需页面时。。我一直挂在stateChangeStart事件的循环中

$scope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
    event.preventDefault(); 

    var confirmPopup = $ionicPopup.confirm({
        ....
    });
    confirmPopup.then(function(res){
        ....
        }
        $ionicNavBarDelegate.back();
    });
}); 
如何记录stateChangeStart事件

编辑:

保持在循环中

$urlRouter.sync()
返回null

触发更新;当地址栏 url更改,又名$locationChangeSuccess。此方法在以下情况下非常有用: 您需要在$locationChangeSuccess事件上使用preventDefault, 执行一些自定义逻辑路由保护、身份验证、配置、, 重定向等,然后通过 正在调用$urlRouter.sync

如果您查看文档,或者想要转到另一个状态,或者想要在转换之间检查某些内容,那么urlRouter.sync的使用非常明显,您也可以这样做以防止重定向循环:

var nextState = null;
$rootScope.$on('$stateChangeStart', function (event, next, current) {
        if (next.name == nextState) return;
        event.preventDefault();
        nextState = next.name;
        $state.go(next.name);

});
返回null

触发更新;当地址栏 url更改,又名$locationChangeSuccess。此方法在以下情况下非常有用: 您需要在$locationChangeSuccess事件上使用preventDefault, 执行一些自定义逻辑路由保护、身份验证、配置、, 重定向等,然后通过 正在调用$urlRouter.sync

如果您查看文档,或者想要转到另一个状态,或者想要在转换之间检查某些内容,那么urlRouter.sync的使用非常明显,您也可以这样做以防止重定向循环:

var nextState = null;
$rootScope.$on('$stateChangeStart', function (event, next, current) {
        if (next.name == nextState) return;
        event.preventDefault();
        nextState = next.name;
        $state.go(next.name);

});

如果需要在不进入无限循环的情况下重新加载相同的状态,可以使用:$state.go'your_state.name',{},{reload:true};我同意@Mohammad Sepahvand实现解决上述问题的正确方向:我没有重新加载相同的状态不幸的是,我加载了另一个状态。如果需要重新加载相同的状态而不进入无限循环,可以使用:$state.go'your_state.name',{},{reload:true};我同意@Mohammad Sepahvand的观点,正确的方向是解决上述问题:我没有重新加载同一个状态,不幸的是,我加载了另一个状态。我不知道如何应用这个。你能给我举个例子吗?我正在失去这样的状态参数。如何解决这个问题?感谢you@alyn000r您可以将参数传递给$state.go,基本上:$rootScope.$on'$stateChangeStart',functionevent,toState,toParams,fromState,fromsparams{…}不知道如何应用这个。你能给我举个例子吗?我正在失去这样的状态参数。如何解决这个问题?感谢you@alyn000r您可以将参数传递给$state.go,基本上:$rootScope.$on'$stateChangeStart',functionevent,toState,toParams,fromState,fromsparams{…}