gpt4 book ai didi

angularjs - 具有 2 个参数设置标题而不是查询参数的 Restangular getList

转载 作者:行者123 更新时间:2023-12-01 03:47:01 24 4
gpt4 key购买 nike

根据我对 restangular docs 的理解, 调用Resource.getList('subElement',{query:param})应该调用/resource/subelement?query=param
我在 Rails API 之上使用 Ransack,我试图传递一些搜索参数,这些参数采用“q[field_eq]=foo”的形式。

这是一个 Controller :

.controller('PlaypenCtrl', function PlaypenCtrl(
$scope,
Resource
) {
'use strict';

var qParams;

$scope.doIt = function() {
qParams = {
per_page: 10
};
qParams['q[some_field_eq]'] = 'foo';
console.log(qParams); //Object {per_page: 10, q[some_field_eq]: "foo"}

Resource.getList('subElement',qParams).then(function(list){
console.log(list);
});

};
});

当我调用 doIt 时,它会被记录下来:
Error: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': 'q[some_field_eq]' is not a valid HTTP header field name.

这是有道理的,因为显然这不是一个有效的 HTTP header 字段名称。

问题是......为什么 Restangular 会尝试将 qParams 对象放入请求 header 中?根据文档,这些应该是请求参数。

如果我取出“子元素”,事情会按预期工作:
  $scope.doThat = function() {
qParams = {
per_page: 10
};
qParams['q[some_field_eq]'] = 'foo';
console.log(qParams); //Object {per_page: 10, q[some_field_eq]: "foo"}

Resource.getList(qParams).then(function(list){
//calls /resource?per_page=10&q%5Bsome_field_eq%5D=foo
console.log(list); //...a normal restangular list object, as expected
});
};

我错过了什么?

最佳答案

getList 方法的两个参数是查询参数和标题。为了访问 subElement 端点,您必须使用以下内容:

Resource.all('subElement').getList(qParams)

我相信这就是您正在寻找的。

关于angularjs - 具有 2 个参数设置标题而不是查询参数的 Restangular getList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26065681/

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