如何从调用函数控制isArray值?(修改$ resource params)

Dan*_*iel 2 angularjs angular-resource

我想知道如何设置isArray参数resource,因为有时候我希望它true有时候false

这是我的资源工厂代码

dummyServices.factory('Dummy', ['$resource',
    function ($resource) {
        return $resource('http://dummyServer/dummyApp/dummyREST/:methodName', {}, {
            query: {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                isArray: false // <-- isArray: someParameter ???
            }
        });
    }]);
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

$scope.myDummyObj = Dummy.query(
        {
            methodName: 'dummyMethod'
        },
        myDummyArgument
    );
Run Code Online (Sandbox Code Playgroud)

如何设置isArray从我的Dummy.query电话?

Ste*_*wie 5

正如您可能已经知道的那样,$ resource从未打算成为更强大的$ http服务的替代品,因此,作者只是不打算暴露更强大和可配置的API.

也就是说,在运行时配置资源的唯一方法是将其包装在自己的自定义工厂中.但这只会让事情变得更加丑陋,IMO.

PLUNKER

app.factory('Dummy', [
  '$resource',
  function ($resource) {

    return function(config){

      return $resource('http://dummyServer/dummyApp/dummyREST/:methodName', {}, {
        query: angular.extend({
          method: 'POST',
          headers: {
            'Content-Type': 'application/json'
          },
          isArray: false // <-- isArray: someParameter ???
        }, config)
      });

    };

  }
]);
Run Code Online (Sandbox Code Playgroud)

控制器:

$scope.myDummyObj = Dummy({isArray: true, method: 'GET'})
                      .query({methodName: 'dummyMethod'});
Run Code Online (Sandbox Code Playgroud)