如何使$资源的URL通用?

我是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的具体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" }
        });

    }]);

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


因此,我们可以用一个接受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()

例子小提琴

链接地址: http://www.djcxy.com/p/89559.html

上一篇: How to make the URL of $resource generic?

下一篇: angular $resource not working as expected