ui路由器阻止重定向到服务器静态目录

uiRouter blocking redirect to server's static directory

我正在尝试编写一个上传 json 的序列,将其转换为 xml 和 returns 一个由浏览器直接保存到磁盘的文件。在我的工厂中 saveData 只是 returns 一个 $http 承诺,我的控制器有:

vm.saveFile = () ->
    console.log "Saving to file"
    Factory.saveData()
    .success (res) ->
        $location.url '/newfile.tcx'

我原本打算让我的 express 后端发送一个重定向,但是 angular $http 忽略了这个,所以现在在客户端实现了。如果我直接转到 http://localhost:9000/newfile.tcx 然后文件被下载(因为 /uploads 在 express 中被定义为静态目录),但是上面的 $location 重定向只 returns 我到主页,哪个可能是以下结果:

.config ($stateProvider, $urlRouterProvider, $locationProvider) ->
    $urlRouterProvider
    .otherwise '/'

我需要在我的 uirouter 配置中更改什么才能下载文件(然后重定向到 '/' or '/editor'

$location 服务改变了地址栏中的地址,但它并不要求浏览器加载位于该地址的资源。为此,只需使用本机 window.location 对象:

window.location = 'http://localhost:9000/newfile.tcx';

参见 https://developer.mozilla.org/en-US/docs/Web/API/window.location