我正在构建一个应用程序原型并尝试模拟 REST Web 服务。
这是我的代码:
var mock = angular.module('mock', ['ngMockE2E']);
mock.run(function($httpBackend){
users = [{id:1,name:'John'},{id:2,name:'Jack'}];
$httpBackend.whenGET('/users').respond(users);
$httpBackend.whenGET(new RegExp('\\/users\\/[0-9]+')).respond(users[0]);
}
一切正常,我的资源 User.query() 返回所有用户,而 User.get({id:1}) 和 User.get({id:2}) 返回同一个用户(John)。
现在为了改进我的原型,我想返回合适的用户,匹配好的 id。
我在角度文档中阅读了我应该能够用函数替换 RegExp URI。这个想法是从 url 中提取 id 以在响应方法中使用它。然后我尝试了这个:
$httpBackend.whenGET(new function(url){
alert(url);
var regexp = new RegExp('\\/users\\/([0-9]+)');
id = url.match(regexp)[1];
return regexp.test(url);
}).respond(users[id]);
问题是 url 参数始终未定义。有什么想法可以实现我的目标吗?