如何使$ resource的URL通用?

时间:2017-04-10 04:41:13

标签: angularjs angular-resource

我是AngularJS的新手,我在这里有一个问题。

我正在使用$resource进行CRUD操作。

我目前有这样的代码,

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的特定网址。

我现在稍微修改我的代码,

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

    }]);

我的问题是我应该在控制器中做些什么?

1 个答案:

答案 0 :(得分:0)

因此,我们可以使用接受$resource作为参数的函数来封装它,而不是直接返回url

这样的事情:

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