2015-11-01 91 views
0

UsersService.js传递多个参数Angularjs资源

app.factory('UsersService', function($resource) { 
return $resource('api/users/:id', {}, { 
    update: {method:'PUT'}, 
}); 

随着的index.php(和PHP框架修身API)

... 
$app->get('/users/:id', 'getUser'); 
$app->get('/users/:username', 'getUserByUsername'); 
function getUser(){ ... } 
function getUserByUsername(){ ... } 
... 

现在,当我尝试调用某处UsersService.get({id:15});它有效,但是当我尝试拨打UsersService.get({username:'test'});时它不起作用...

我尽可能地在Google上找到了可能的方式,但我无法完成工作。我可以做一个单独的服务来通过用户名获取用户,但是如果可能的话,我想将所有这些保存在一个服务中。

请大家帮忙,谢谢!

回答

0

你必须告诉角度$资源从哪里得到的价值:用户名。

欲了解更多详细看documentation

变化YOUT UserService.js

app.factory('UsersService', function($resource) { 
    return $resource('api/users/:id/:username', {id:'@id',username:'@username'}, { 
    update: {method:'PUT'} 
}); 

编辑:

请问你的PHP脚本知道当它得到/users/123它应该首先运行路线,但是当它得到/users/123joe它应该运行下一个路线?你以某种方式验证它吗?如果不是,你应该改变你的路线在PHP脚本,更清晰。

+0

感谢您的回复。我发现不可能有两个相同的路由(即使他们添加了不同的参数:id /:username,因为这显然没有关系),所以我添加了'“getUserByUsername”:{method:'GET',url: 'user,userUsername /:username'},'在UsersService.js和php中,我添加了'$ app-> get('/ userByUsername /:username','getUserByUsername');'现在它的工作方式是我想要的。 – justonequestion