代码之家  ›  专栏  ›  技术社区  ›  svelandiag

流星js:如何对CollectionFS的下载链接执行操作

  •  1
  • svelandiag  · 技术社区  · 11 年前

    您好,我有一个模板,其中有下载上传图像的链接:

    {{#each uploads}}
                <ul class="list-group">
                    <li class="list-group-item">{{original.name}} <a href="{{url download=true}}" class="btn btn-primary downloadUpload" data-uploadid="{{_id}}">Download</a></li>
                </ul>
    {{/each}}
    

    链接正常工作,但今天我想在单击按钮后执行一些操作,如下所示:

    Template.practicalQuestionTake.events
        'click .downloadUpload': (e, template) ->
            console.log @
    

    但是,在添加事件处理程序后,一旦我单击下载链接,我就可以下载文件,但页面会断开(空白页面),检查控制台中的日志时会显示错误:

    "TypeError: router.route is undefined"
    

    然后我试图回归现实:

    Template.practicalQuestionTake.events
        'click .downloadUpload': (e, template) ->
            console.log @
            true
    

    但同样的结果是,我尝试使用preventDefault

    Template.practicalQuestionTake.events
        'click .downloadUpload': (e, template) ->
            e.preventDefault()
            console.log @
    

    现在任何事情都发生了,我无法下载文件,似乎什么都没有发生。

    如何在CollectionFS的下载链接的事件处理程序中执行某些操作?

    1 回复  |  直到 11 年前
        1
  •  1
  •   svelandiag    11 年前

    嗨,我做了很多研究,然后发现问题是Iron路由器的问题,因为某种原因,当你有一个指向外部url的链接时,所有订阅和数据上下文都会丢失,因此你会得到一个404未找到页面或“TypeError:router.route is undefined”

    This is the issue 这个问题的解决方案:每当您有下载链接(AmazonS3、dropbox、CollectionFS等)时,请使用 target="_blank" 在您的链接中。这解决了我的问题