Angularjs ngResource:在URL而不是正文中发送数据
我正试图通过以下方式使用ngResource保存对象:Angularjs ngResource:在URL而不是正文中发送数据,angularjs,rest,ngresource,Angularjs,Rest,Ngresource,我正试图通过以下方式使用ngResource保存对象: var Tasks = $resource("http://example.com/task", { task: { id: '@id' } }, { 'save': { method: 'POST', params: { key: "abc" } } }); var task = new Tasks(); task.id
var Tasks = $resource("http://example.com/task", {
task: {
id: '@id'
}
}, {
'save': {
method: 'POST',
params: {
key: "abc"
}
}
});
var task = new Tasks();
task.id = "123";
task.$save();
这将生成此URL:
http://example.com/task?task=%7B%22id%22:%22@id%22%7D&key=abc
为什么“@id”字符串没有被实际数据替换?为什么没有显示关键参数?我强烈建议您修改api以不传递json字符串,但如果您必须这样做,您可以执行以下操作
var Tasks = $resource("http://example.com/task", {
task: '@json'
}, {
'save': {
method: 'POST',
params: {
key: "abc"
}
}
});
var task = new Tasks();
task.id = '123';
task.json = angular.toJson(task);
您的保存方法是“POST”。这就是为什么!顺便说一句,你应该使用POST在服务器上更改某些内容,但永远不会得到。谢谢,但我不明白…我要更改什么来修复此问题?我在这里写的代码是用于添加新任务,而不是获取新任务。我的URL现在包含以下内容:task?id=123&key=abc,这不是API想要的。URL必须包含一个“任务”参数,该参数包含一个ID参数。@fstr因此
@
帮助程序只能在一个级别的深度工作。你必须手工编码。啊,很高兴知道。最干净的是我可以手动操作吗?我可以继续使用$resource吗?@fstr我更新了我的答案,您可能需要使用以下内容。但是,如果可以的话,我会敦促您更改api。好的,谢谢!:)顺便问一下,更改API的理由是什么?他们用不规范的方式做这件事?