相关疑难解决方法(0)

AngularJS $位置不改变路径

我在提交表单后更改页面的URL时遇到问题.

这是我的应用程序的流程:

  1. 路由已设置,URL被识别为某个表单页面.
  2. 页面加载,控制器设置变量,指令被触发.
  3. 触发了一个特殊的表单指令,它使用AJAX执行特殊的表单提交.
  4. 在执行AJAX之后(Angular不处理AJAX)然后触发回调并且指令调用$scope.onAfterSubmit设置位置的函数.

问题是在设置位置后没有任何反应.我也试过设置位置参数/......不.我也试过不提交表格.什么都行不通.

我已经测试过以查看代码是否达到了onAfterSubmit函数(它的功能).

我唯一想到的是,函数的范围以某种方式被改变(因为它从一个指令中被调用),但是onAfterSubmit如果范围发生变化,它又如何调用呢?

这是我的代码

var Ctrl = function($scope, $location, $http) {
  $http.get('/resources/' + $params.id + '/edit.json').success(function(data) {
    $scope.resource = data;
  });

  $scope.onAfterSubmit = function() {
    $location.path('/').replace();
  };
}
Ctrl.$inject = ['$scope','$location','$http'];
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

angularjs

124
推荐指数
4
解决办法
13万
查看次数

处理angularjs $ http中的重定向

我在我的应用程序中使用angularjs http服务.我在网站上注意到了这一点

如果AJAX调用成功(服务器发回200和209之间的HTTP代码),则执行传递给success()函数的函数.如果AJAX调用失败(除了重定向之外的所有其他代码),则执行传递给error()方法的函数.

显然,重定向状态代码不是成功的一部分,也不是错误回调.那么我们如何处理重定向?

这是我的脚本所做的,使用http get从服务器获取数据.如果会话到期,则服务器返回302状态代码.我应该抓住该状态代码然后将页面重定向到登录.

app.controller('GraphController', function($scope, $http, localStorageService, $interval) {
        $scope.GraphData = [{"key":"in","values":[]},{"key":"out","values":[]}]; 

        $scope.pollStats = function() {
            $http.get('/statistics/getStat').success(function(lastData, status, headers) {              
                if (status==302) {
                    //this doesn't work
                    //window.location=headers('Location');
                    //this doesn't work either
                    window.location.replace(headers('Location'));
                }else if (status==200) {
                    ...processData
                }
            });
        };
});
Run Code Online (Sandbox Code Playgroud)

显然我的脚本不会工作,因为成功回调无法处理重定向.那么我们该如何应对呢?

redirect angularjs

20
推荐指数
1
解决办法
5万
查看次数

标签 统计

angularjs ×2

redirect ×1