我的学生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); } );
当我打电话只有我想要的URL / app / student /?courseid = 99(不)
Student.query({courseId:cId},function(data){ deferred.resolve(data); } );
相反,我得到:/ app / student / 6682831673622528
当我打电话给学生和课程编号我想:/ app / student /?id = 1& courseid = 2
相反,我得到/ app / student / 12
尝试这样的URL:/ app / student /:studentid&:courseid给我/ app / student / 1& 2
不知怎的,只给学生作品,但是课程或者两者都不能像我想要的那样工作.不知道我会如何期待,因为关于多个参数的文档中没有任何内容作为查询字符串(在/ app / student / studentid / 1 / courseid / 2上扩展url),但是由于这是一个xhr请求要求/ app / student /附加的GET参数为?one = val& two = val
有没有办法做到这一点?
如果您需要将参数映射到查询参数,而不是路径参数,则不应将参数名称放入路径中.例如.学生资源应该如下所示:
原文链接:https://www.f2er.com/angularjs/142965.htmlvar 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
其他情况也会奏效.只需不要将路径参数与查询参数混淆.