Javascript 为什么文件下载重定向会违反规则?

Javascript 为什么文件下载重定向会违反规则?,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我的路由方案具有其他规则: $urlRouterProvider.otherwise("/a"); 我有这个功能: function getCSV(TableName) { window.location = API_ENDPOINT + '/EditValidationXREF/GetCSV?TableName=' + TableName; } 问题是,当我启动函数getCSV时,我可能处于状态z,但我会自动被重新路由到a(我假设这是正在运行的其他规

我的路由方案具有其他规则:

$urlRouterProvider.otherwise("/a");
我有这个功能:

function getCSV(TableName) {
            window.location = API_ENDPOINT + '/EditValidationXREF/GetCSV?TableName=' + TableName;
        }

问题是,当我启动函数
getCSV
时,我可能处于状态z,但我会自动被重新路由到a(我假设这是正在运行的其他规则)。为什么会发生这种情况,我如何避免这种情况(即下载后停留在z状态)

解决了这个问题。正在执行的
getCSV
链接如下所示:

<a href="#" ng-click="vm.getCSV('TableName')">Interchanges</a>

这显然将浏览器重定向到了没有路由的页面(因此触发了预期的其他规则)

解决方案:

<a href="javascript:void(0)" ng-click="vm.getCSV('TableName')">Interchanges</a>

该函数

function getCSV(TableName) {
            window.location = API_ENDPOINT + '/EditValidationXREF/GetCSV?TableName=' + TableName;
        }
实际上是将窗口的位置更改为应用程序无法识别或解析的某个位置。这就是原因,它会导航到与之关联的URL。下载文件的另一种方法是将上述功能更改为:

function getCSV(TableName) {
            window.open(API_ENDPOINT + '/EditValidationXREF/GetCSV?TableName=' + TableName, _blank);
        }

这将下载文件,而无需导航。

@KevinB这是什么意思?文件正在下载中。下载后,虽然我被重新路由回州a…哦。。。这听起来像是默认的浏览器行为。当你重定向到一个下载,它会下载,而不是离开页面。不过,路由问题,我不确定。假设每个状态都被正确地添加到历史中,它会将您返回到相同的状态。但它不会返回,我的意思是,它会返回到正确的页面,但不会返回到页面路径。我想这就是路由器将我重定向到其他规则的原因。如何使浏览器返回到下载前的url?如果使用iframe来启动下载,则完全可以避免此问题