angular 工厂中 $resource 的动态 URL 不使用全局变量

Dynamic URL for $resource in an angular factory without using global variable

如何定义一个动态工厂,使 URL 不使用 $rootScope 从控制器传递?

  .factory('getData', function ($resource,$rootScope) {
        return $resource($rootScope.url, {id:'@id'}{
            'query': { method: 'GET', isArray: true},
            'get': {
                method: 'GET',
                isArray: true,

                transformResponse: function (data) {
                    data = angular.fromJson(data);
                    return data;
                }
            }
        });
    })

控制器

   var data = [];
            $rootScope.url='/userDetails/userId?userId=userID'
            getData.get({id:'123'}).$promise.then(function(data){
            angular.forEach(data,function(dataVal){
             //
            },data)

您应该在工厂中创建一个函数,然后在调用它时将 URL 和 id 作为参数传递给该函数。

对于您的代码,工厂应如下所示:

.factory('getData', function($resource, $rootScope) {
  return {
    query: function(url, id){
      return $resource(url, {userId: id}, {
        'query': {
          method: 'GET',
          isArray:true
        },
        'get': {
          method: 'GET',
          isArray:true,

          transformResponse: function(data) {
            console.log(data);
            data = angular.fromJson(data);
            return data;
          }
        }
      }).get();
    }
  }
})

然后你会在控制器中像这样调用它getData.query(url,id)