Angular:如何访问transformRequest数据?

时间:2013-12-02 19:08:45

标签: angularjs coffeescript

在我的控制器中,我有这个代码向我的工厂提出要求:

UploadService.news.save
                    data: angular.toJson $scope.data
                    file: $scope.file[0]
                , ( (response) ->
                    #$scope.alert = ''
                    alert response.data
                )

这将转到我的工厂:

app.factory "UploadService", ["$resource", ($resource) ->
    news: $resource("upload/news",
        headers:
            'Content-Type': false
        transformRequest: (data) ->
            fd = new FormData()
            fd.append 'data', data.data
            fd.append 'file', data.file
            fd
    )

    member: $resource("404/upload/member")
]

问题是transformRequest数据参数未定义,有什么问题? (我正在使用Angular 1.2.3)

1 个答案:

答案 0 :(得分:1)

您声明资源的方式有几个错误:

  1. $resource第二个参数是默认参数值的哈希图
  2. 第三个参数包含此资源的actions(即方法)。如果要覆盖保存操作,则需要提供其名称。
  3. 这是一个有效的jsFiddle(打开您的开发控制台,然后运行)

    app.factory "UploadService", ["$resource", ($resource) ->
      news: $resource("upload/news", {}, # the missing second parameter
        save: # You want to override the save action
          method: 'POST' # it's an override, not an extend: need to set the method
          headers: 
            'Content-Type': false
          transformRequest: (data) ->
            console.log data # data is now defined
            return 
      )
    
      member: ...
    ] 
    

    或查看official doc