我的学生ulr看起来像这样:
var Student = $resource('/app/student/:studentid:courseId',
{studentid:'@id',courseId:'@cid'}
);
当我在没有参数的情况下调用它时,我希望网址为/app/student/
(有效)
var names=Student.query(
function(){
deferred.resolve(names);
}
);
当我用studentid调用它时,我希望网址为/app/student/?id=88
(有效)
Student.get({"id":id},
function(data){
deferred.resolve(data);
}
);
当我使用courseid调用时,我希望网址为/app/student/?courseid=99
(不是)
Student.query({courseId:cId},
function(data){
deferred.resolve(data);
}
);
相反,我得到:/app/student/6682831673622528
当我同时拨打学生和课程ID时,我想:/app/student/?id=1&courseid=2
相反,我得到/app/student/12
为网址尝试类似的内容:/app/student/:studentid&:courseid
为我提供/app/student/1&2
不知何故,只提供studentntid作品,但课程或两者都不能正常工作。我不确定我会如何期待它,因为文档中没有任何关于多个参数作为查询字符串的内容(有使用/app/student/studentid/1/courseid/2
扩展url但是因为它是xhr请求我想让它请求{{1将GET参数附加为/app/student/
有办法做到这一点吗?
答案 0 :(得分:37)
如果需要将参数映射到查询参数而不是路径参数,则不应将参数名称放入路径中。例如。学生资源应如下所示:
var Student = $resource('/app/student/',
{}
);
然后这样的调用将毫无问题地工作:
Student.get({id:12,courseId:55});//calls /app/student/?id=12&courseId=55
Student.get({id:12});//calls /app/student/?id=12
Student.get({courseId:55});//calls /app/student/?courseId=55
其他案例也会有效。只是不要将路径参数与查询参数混淆。