服务中的连续$ http帖子两次发送相同的参数

时间:2014-01-13 18:34:02

标签: angularjs http coffeescript http-headers http-request

使用Angular 1.2.7,我编写了一个服务来将文件上传到s3:在具有多个文件输入字段的界面中选择文件,并为控制器中的循环中的每个文件调用该服务:

      for file, index in $files
        cloudUpload.uploadToS3(
          file,
          index
      )

在我的服务中:

    signS3File: (file) ->
      #create the uploadData array...
      #...
      #generate unique uploadData for this particular file
      return $http(
        method: 'POST'
        url: '/api/s3_signing'
        data: uploadData
      )

    uploadToS3: (file, index) ->
      @signS3File(file)
        .then(do some more stuff)

所有这些都很有效,但我有一个问题:

当我在每次调用函数时查看uploadData中生成的内容时,数据是唯一的并且对应于我想要发送的内容。但是,当我检查$ http发出的请求时,事实证明使用的uploadData始终是相同的(我认为它是最后一次$ http调用之一)。我真的不明白为什么,如果uploadData是正确的,为什么$ http总是发送相同的数据!

为了说明一点,这里是创建的每个uploadData变量的console.logs:

Object {... file_name: "80RT2ebgkX2QQMGcxi4U0rqumZuUWblF.mp3"}
Object {... file_name: "7O6QBlMSDpRA4rS5UgPVDEdIIwmRkV0t.mp3"}

这里是请求发送的数据(两个请求都相同,这是我的问题):

...
file_name: "7O6QBlMSDpRA4rS5UgPVDEdIIwmRkV0t.mp3"

编辑:使用$ http.post(...)而不是$ http(方法:“post”...)具有相同的结果。

编辑:我已经将s3signing函数从服务移动到控制器,并且它的行为正常:正如Caleb建议的那样,它可能是一个范围问题 - 我欢迎这些想法,但是控制器中的签名并不理想!

0 个答案:

没有答案