将Angularjs$资源参数作用域到HTTP哈希



默认情况下,Angular的$resource$save方法发送一个参数在"基本"范围内的请求。例如,创建属性为{name: 'John Smith', email: 'john.smith@gmail.com'}的资源将导致参数为的POST

name=John Smith&email=john.smith@gmail.com. 

然而,我有一个Rails控制器,需要子哈希范围内的资源(更像是普通的railsy做事方式)。我希望相同的创建请求具有参数:

user[name]=John Smith&user[email]=john.smith@gmail.com

问题是,我只是看不到使用$resource的方法。有可能吗?

这可以通过使用$resourcetransformRequest选项来实现。下面是一个使用update操作(用coffeescript编写)的示例:

update:
  method: 'PUT'
  transformRequest: (data, headersGetter) ->
    data = _.omit(data, '$promise', '$resolved')
    json = {'user': data}
    return JSON.stringify(json)

如果您想在默认情况下执行此操作,我建议编写一个封装$resource并将transformRequest函数添加到所有操作的服务。

最新更新