具有多个可选get参数的Angular 1.0.8 $资源

时间:2013-10-08 12:21:59

标签: angularjs angularjs-resource getparameter

我的学生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但是因为它是xh​​r请求我想让它请求{{1将GET参数附加为/app/student/

有办法做到这一点吗?

1 个答案:

答案 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

其他案例也会有效。只是不要将路径参数与查询参数混淆。