2013-10-08 67 views
14

我的學生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(犯規)

​​

相反,我得到:/app/student/6682831673622528

當我與學生和課程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

有沒有辦法做到這一點?

回答

36

如果您需要的參數映射到查詢參數,而不是路徑參數,你不應該把參數的名字到路徑。例如:學生資源應該看起來像這樣:

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 

其他人的情況下也能發揮作用。只是不要將路徑參數與查詢參數混淆。

+0

完美,謝謝。現在就開始工作了。 – HMR