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

时间:2015-01-01 12:32:43

标签: angularjs angular-ui-router

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

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

我最初计划让我的快速后端发送重定向,但是这会被有角度的$ http忽略,所以它现在在客户端实现。如果我直接转到http://localhost:9000/newfile.tcx,则下载文件(因为/uploads被定义为快递中的静态目录),但上面的$ location重定向只返回主页,这可能是结果的:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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