2014-10-20 111 views
0

如何使用AngularJS $资源获取更高级的API请求?我需要请求以下网址:

/学校/

/学校/ 1

/学校/ 1 /书籍

/学校/ 1 /书籍/ 1

对于像基本的URL:

/学校/

/学校/ 1

我知道我可以做:

angular.module('resources.schools').factory('School', ['$resource', function($resource){ 
    return $resource('/schools/:id'); 
}]); 

回答

0

先走一步,巢URL,并给父标识符字段的名字上你型号:

$resource("/schools/:school_id/books/:id") 
+0

我想用同一个工厂的两个请求。比如,School.query()和School.getBooks() – 2014-10-20 13:18:47

0

根据问题和您的最新评论,将'书籍'部分转为参数(例如'controller'),然后使用设置控制器的方法来扩展资源。

var School = $resource("/schools/:school_id/:controller/:book_id", {}, { 
    getBooks: { 
    method: 'GET', 
    params: { 
     controller: 'books' 
    } 
    } 
}); 

现在,您可以实现以下目标:

var schools = School.query(); 
var newSchool = new School(); 
var mySchool = School.get(1); 
var mySchoolBooks = mySchool.getBooks(); 
var aBookInMySchool = School.query({'school_id':1, controller:'books', 'book_id': 2})