2017-04-10 60 views
0

我是AngularJS的新手,我在這裏有一個問題。

我爲我的CRUD操作使用$resource

目前,我有這樣的代碼,

angular.module("dopAngular.services") 
.factory("UserRoleService", ["$resource", 
    function ($resource) { 
     return $resource("api/UserRoleApi", {}, { 
      query: { method: "GET", isArray: true }, 
      create: { method: "POST" }, 
      get: { method: "GET" }, 
      remove: { method: "DELETE" }, 
      update: { method: "PUT" } 
     }); 

    }]); 

    //below is the code in my controller 
       UserRoleService.query(function (data) { 
       vm.UserRoleLookups = data; 
      }); 

我想使我的UserRoleService通用的,這意味着我不希望爲在工廠級API的具體URL。

現在我修改我的代碼一點點,

angular.module("dopAngular.services") 
.factory("UserRoleService", ["$resource", 
    function ($resource, url) { 
     return $resource(url, {}, { 
      query: { method: "GET", isArray: true }, 
      create: { method: "POST" }, 
      get: { method: "GET" }, 
      remove: { method: "DELETE" }, 
      update: { method: "PUT" } 
     }); 

    }]); 

我的問題是什麼,我應該在我的控制呢?

回答

0

因此,我們可以用一個接受url作爲參數的函數來封裝它,而不是直接返回$resource

事情是這樣的:現在

myApp.factory('UserRoleService', function($resource) { 
    return { 
    query: function(url) { 
     return $resource(url, {}, { 
     query: { 
      method: "GET", 
      isArray: true 
     }, 
     get: { 
      method: "GET" 
     } 
     }); 
    } 
    } 
}); 

,在控制器,你可以把它想:

UserRoleService.query('//httpbin.org').get() 

example fiddle