$resource "/us-6ren">
gpt4 book ai didi

angularjs - Angular 查询中的嵌套参数

转载 作者:行者123 更新时间:2023-12-04 08:44:38 25 4
gpt4 key购买 nike

我有一个基本的 angular 资源(angular 1.0.7):

app.factory "User", [ "$resource", ($resource)->
$resource "/users/:id", { id: '@id' }, {
index: { method: 'GET', isArray: false }
}
]

我可以传递如下参数:
User.index({ foo: 1, bar: 2 })

但我需要传递嵌套参数:
User.index({ foo: { bar: 1 } })

这失败了,因为它发送:
/users?foo=%5Bobject+Object%5D

我试过:
User.index({ foo: JSON.stringify({ bar: 1 }) })

但显然参数在服务器端无法识别(仅仅是字符串),我想避免在那里解析的麻烦。

你有这个问题的优雅解决方案吗?

使用 jQuery 我已经完成了:
$.get("/users", { foo: { bar: 1 } } )

生产:
/users?foo%5Bbar%5D=1

由服务器完美解释。

好像 like a known issue ( here too ),从现在开始,让我们坚持一个丑陋的补丁......

最佳答案

不像 Angular 的变化那么优雅,但你应该能够通过使用函数的结果设置参数来解决这个问题:

User.index.get({ "foo": (function () { 
return JSON.stringify({ bar: 1 });
})() } );

产生与您要查找的内容类似的 HTTP 请求:
?foo=%7B%22bar%22:1%7D

整个 Angular 示例:
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 });
})() } );
}

http://jsfiddle.net/pherris/U8F8G/6/

关于angularjs - Angular 查询中的嵌套参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18588604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com