【问题标题】:AngularJS Advanced $resource MappingAngularJS 高级 $resource 映射
【发布时间】:2016-01-24 01:43:38
【问题描述】:

如何将 AngularJS $resource 用于更高级的 API 请求?我需要请求以下网址:

/学校/

/schools/1

/schools/1/books

/school/1/books/1

对于基本网址,例如:

/学校/

/schools/1

我知道我能做到:

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

【问题讨论】:

    标签: angularjs rest angularjs-resource angularjs-factory


    【解决方案1】:

    继续嵌套 URL 并为父标识符提供模型上字段的名称:

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

    【讨论】:

    • 我想对这两个请求使用同一个工厂。比如 School.query() 和 School.getBooks()
    【解决方案2】:

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

    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})
    

    【讨论】:

      猜你喜欢
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 2016-08-02
      • 1970-01-01
      相关资源
      最近更新 更多