考虑像/ api / users / findByCriteria这样的REST URL,它接收包含条件详细信息的POSTed JSON,并输出用户列表。
如何使用Restangular调用它以使其结果类似于Restangulars getList()?
Restangular.all('users')。post(“findByCriteria”,crit)...可能有效,但我不知道如何让Restangular认识到结果将是用户列表
Restangular.all('users')。getListFromPOST(“findByCriteria”,crit)...能做的很好,但它不存在。
执行GET而不是POST不是一种选择,因为标准很复杂。
答案 0 :(得分:0)
那么,
我遇到同样的问题,我使用plain
函数解决它,它返回一个简单的对象数组。但它将删除所有Restangular辅助函数。所以,你无法使用它。
代码段:
Restangular.one('client').post('list',JSON.stringify({
offset: offset,
length: length
})).then(
function(data) {
$scope.clients = data.plain();
},
function(data) {
//error handling
}
);
答案 1 :(得分:0)
您可以通过在配置块中为OnElemRestangularized
设置自定义处理程序来获取POST以返回正确的重新集合化的集合。在对象进行Restangularized之后调用此处理程序。传入isCollection
以显示对象是否被视为集合或单个元素。在下面的代码中,如果对象是一个数组,但未被视为集合,则将其作为集合再次进行重新分类。这会将所有的restangular处理程序添加到数组中的每个元素。
let onElemR = (changedElem, isCollection, route, Restangular: restangular.IService) => {
if (Array.isArray(changedElem) && !isCollection ) {
return Restangular.restangularizeCollection(null, changedElem, changedElem.route);
}
return changedElem;
};
RestangularProvider.setOnElemRestangularized(onElemR);