angularjs - 具有多个可选获取参数的 Angular 1.0.8 $resource

标签 angularjs angularjs-resource getparameter

我的学生 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/

相关文章:

javascript - 为什么基于 ng-class 的 ng-animate 转换不起作用?

angularjs - REST方式批量更新、创建、删除

asp.net-mvc - Angular JS Put 方法与 ASP.NET MVC

java - 为什么我的 Java Echo 小程序不工作?

java - 在java代码中提交表单时request.getParameter()获取null?

javascript - 更新对象数组

angularjs - 是否可以在 Electron 应用程序上使用 nodejs 依赖项?

angularjs - 使用 Protractor 检查 POST 请求负载数据