簡體   English   中英

Angular-通用圖像服務與特定資源(例如,用戶,圖像,動物)圖像服務

[英]Angular - Generic image service vs resource-specific (e.g., user, image, animal) image services

我在解決問題時遇到了一些麻煩,可能需要一些幫助。

我正在為我的客戶端MVC框架使用Angular.js在Rails中開發一個應用程序,並創建了一個服務,Angular可以通過該服務獲取圖像。 這很簡單:

var ImageServices = angular.module("ImageServices", ["ngResource"]);

ImageServices.factory("Image", ["$resource",
  function ($resource) {
    return $resource("/images/:id.json", {}, {
      "query"  : { method: "GET", params: {}, isArray: true },
      "update" : { method: "PUT", params: { id: "@id" } },
      "remove" : { method: "DELETE" }
    });
  }
]);

就我的目的而言,以上服務可能有點過於通用。 我想要該服務提供給我的是與給定用戶關聯的所有圖像。 我想可以通過將所需的圖像數據嵌套在用戶數據中來完成此操作,如下所示:

user = {
  // user attributes
  blah: "blah",
  //image objects
  images: [
    {} 
  ]
}

或者,也許我可以以某種方式在Rails中編寫代碼,該代碼將返回與用戶關聯的所有圖像,因此:

http://localhost:3000/users/1/images.json

或者也許我可以為要返回Angular的每種數據類型提供服務。

在架構上,我不確定什么有意義。 有人可以提供一些最佳路徑可能的見解嗎? 如果沒有一成不變的答案,如果可以推薦的話,我不反對讀一本有關該主題的書。 謝謝!

$ resource服務有點像$ http服務的包裝器。 它內置了一些方法。

services.factory('Images', ['$resource',
     function($resource) {
     return $resource('/images/:id', {id: '@id'});
    }]);

@id告訴它從其對象中選擇id字段,並將其用作id參數。 因此,根據您的情況,您可以執行{id:'@user'}。

以上資源使您可以訪問:

Images.get()    //GET Single JSON
Images.save()   //POST Single JSON
Images.query()  //GET JSON Array
Images.remove() //DELETE Single JSON
Images.delete() //DELETE Single JSON

Images.get({id: 15}) //will make return all images for a user through a call to /images/15.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM