apn*_*ing 8 angularjs angular-resource
我有一个基本的角度资源(角度1.0.7):
app.factory "User", [ "$resource", ($resource)->
$resource "/users/:id", { id: '@id' }, {
index: { method: 'GET', isArray: false }
}
]
Run Code Online (Sandbox Code Playgroud)
我可以传递如下参数:
User.index({ foo: 1, bar: 2 })
Run Code Online (Sandbox Code Playgroud)
但我需要传递嵌套参数:
User.index({ foo: { bar: 1 } })
Run Code Online (Sandbox Code Playgroud)
这失败了因为它发送:
/users?foo=%5Bobject+Object%5D
Run Code Online (Sandbox Code Playgroud)
我试过了:
User.index({ foo: JSON.stringify({ bar: 1 }) })
Run Code Online (Sandbox Code Playgroud)
但显然在服务器端(仅仅是字符串)无法识别参数,我想避免在那里解析的麻烦.
你对这个问题有一个优雅的解决方案吗?
使用jQuery我已经完成了:
$.get("/users", { foo: { bar: 1 } } )
Run Code Online (Sandbox Code Playgroud)
生产:
/users?foo%5Bbar%5D=1
Run Code Online (Sandbox Code Playgroud)
完美地由服务器解释.
不像 Angular 的变化那么优雅,但你应该能够通过使用函数的结果设置参数来解决这个问题:
User.index.get({ "foo": (function () {
return JSON.stringify({ bar: 1 });
})() } );
Run Code Online (Sandbox Code Playgroud)
产生与您正在寻找的内容类似的 HTTP 请求:
?foo=%7B%22bar%22:1%7D
Run Code Online (Sandbox Code Playgroud)
整个角度示例:
var app = angular.module('myApp', ['ngResource']);
var restUrl = window.location + 'echo/json/';
app.factory('User', function($resource, $http){
return {
index: $resource(restUrl)
}
});
function RestCtrl($scope, User) {
$scope.url = restUrl;
User.index.get({ "foo": (function () {
return JSON.stringify({ bar: 1 });
})() } );
}
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/pherris/U8F8G/6/
| 归档时间: |
|
| 查看次数: |
2639 次 |
| 最近记录: |