我有一个$资源,用于处理实体的crud http请求。它包含在我的自定义服务中,目前还没有添加任何功能,所以不用担心 - 它只是旧的纯资源:
app.factory('coursesService', ['$resource', coursesService]);
function coursesService($resource) {
return $resource('/api/courses/:id', {
id: '@id'
}, {
update: {
method: 'PUT'
}
});
}
所以,我试图删除我的控制器中的一个instanse(存储在控制器对象的courseToDelete
属性中):
this.courseToDelete.$remove()
我使用来自ngMockE2E模块的$ httpBackend服务来模拟后端:
$httpBackend.whenDELETE(/api\/courses\/(.+)/, undefined, undefined, ['id'])
.respond(function(method, url, data, headers, params) {
clientStorage.deleteCourse(params.id);
return [200, {}];
});
因此,当$ resource发送DELETE http请求时,我希望能够从我的本地存储中删除它(因为我没有后端,将数据存储在localstorage中作为序列化的JSON字符串)
我试图删除的对象:
{
id: 1,
name: 'Course 1',
duration: 380,
description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' +
' Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.' +
' Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur' +
' sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
created: new Date(2011,10,30),
authors: [
'Пушкин', 'Лермонтов'
]
}
从docs我预期我的params
参数将具有id
属性但是当函数执行params
时未定义,尽管所有其他参数看起来都很好。我在这做错了什么?
答案 0 :(得分:1)
来自angular $ httpBackend docs。
whenDELETE(url, [headers], [keys])
但您正在使用whenDELETE(url, undefined, undefined, [keys])
所以你的keys
参数是未定义的,没有任何东西作为参数传递。
更新:请注意,此功能未针对1.4.8及更早版本
实施