我的学生 ulr 看起来像这样:
var Student = $resource('/app/student/:studentid:courseId',
{studentid:'@id',courseId:'@cid'}
);
当我不带参数调用它时,我希望 url 为
/app/student/
(作品)var names=Student.query(
function(){
deferred.resolve(names);
}
);
当我用 studentid 调用它时,我希望 url 是
/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
当我用学生和类(class) ID 打电话时,我想:
/app/student/?id=1&courseid=2
相反,我得到 /app/student/12
尝试这样的网址:
/app/student/:studentid&:courseid
给我 /app/student/1&2
不知何故,只提供 studentid 有效,但提供 courseid 或两者都不能像我想要的那样工作。不知道我会如何期望它,因为文档中没有关于多个参数作为查询字符串的内容(有使用
/app/student/studentid/1/courseid/2
扩展 url 但由于它是一个 xhr 请求,我希望它请求 /app/student/
GET 参数附加为 ?one=val&two=val
有没有办法做到这一点?
最佳答案
如果您需要将参数映射到查询参数,而不是路径参数,则不应将参数名称放入路径中。例如。学生资源应如下所示:
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
其他情况也将起作用。只是不要将路径参数与查询参数混淆。
关于angularjs - 具有多个可选获取参数的 Angular 1.0.8 $resource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19247563/