【问题标题】:Pass in parameters with Angular resource service使用 Angular 资源服务传入参数
【发布时间】:2017-03-01 16:00:05
【问题描述】:

我想发送一些参数以在我的服务器上执行 GET,其中一个必须在我的 URL(collabId)中。

这是我的服务

/* Service */
angular.module('app').factory('CollabService', function($resource) {
    return $resource('/collabs/:collabId', {collabId:'@collabId'}, {
        getCollabs: {
            method: 'GET',
            headers: {'Content-Type': 'application/json'},
            isArray: true
        }
    });
});

这是我的控制器。我想在$scope.q 中发送参数,并在URL 中包含我的collabId

我已经尝试过了,但它不起作用(400 Bad Request):

/* Controller */
$scope.q = {
    "collabId": 30;
    "firstWeek": 1;
    "nbWeeks": 4;
    "year": 2015
};
CollabService.getCollabs($scope.q, {collabId: $scope.q.collabId},
    function(col) { //Print result
       console.log(col);
});

我想我在控制器中的查询语法中遗漏了一些东西。你能帮我找出这里有什么问题吗?

谢谢:)

【问题讨论】:

    标签: angularjs promise


    【解决方案1】:

    之前的解决方案有一个小错误。 我对其进行了一些修改,并且能够让它为我工作。

    // Factory
    angular.module('app')
    .factory('CollabService', function($resource) {
        return $resource('/collabs/:collabId',
            {collabId: '@collabId'},
            {query: {
                method: 'GET',
                headers: {'Content-Type': 'application/json'},
                isArray: true
            }
        });
    });
    
    
    // Controller
    var q = {};
    q.collabId = 30;
    ...
    
    // Query
    CollabService.query({collabId: q.collabId}, function(promisedData) { 
         // Promised data
         console.log(promisedData);
    });
    

    【讨论】:

      【解决方案2】:

      这个很好用,你应该试试:

      //服务

      angular.module('app')
      .factory('CollabService', function($resource) {
          return $resource('/collabs/:collabId', {collabId:'@collabId'});
      });
      

      // 控制器

      scope.q = {};
      $scope.q.collabId = 30;
      $scope.q.firstWeek = 1;
      $scope.q.nbWeeks = 4;
      $scope.q.year = 2015;
      CollabService.get($scope.q,
          function(col) { //Print result
             console.log(col);
      });
      

      【讨论】:

        【解决方案3】:

        CollabService 中有错误。在这里你传递整个$scope.q 对象:

        CollabService.getCollabs($scope.q, {collabId: $scope.q.collabId},
            function(col) { //Print result
               console.log(col);
        });
        

        应该改为:

        CollabService.getCollabs({collabId: $scope.q.collabId}, // <--
            function(col) { //Print result
               console.log(col);
        });
        

        【讨论】:

          【解决方案4】:

          这应该可行:

          // Service
          angular.module('app')
          .factory('CollabService', function($resource) {
              return $resource('/collabs/:collabId', {collabId:'@collabId'}, {
                  query: {
                      method: 'GET',
                      headers: {'Content-Type': 'application/json'},
                      isArray: true
                  }
              });
          });
          
          // Controller
          var q = {};
          q.collabId = 30;
          q.firstWeek = 1;
          q.nbWeeks = 4;
          q.year = 2015;
          
          // Get 
          CollabService.get({collabId: q.collabId}, function(col) { 
               //Print result
               console.log(col);
          });
          
          // Query
          CollabService.query(q, function(col) { 
               //Print result
               console.log(col);
          });
          

          【讨论】:

          • 您好,不,它不起作用。它与 URL 匹配,但我得到 2 Bad Request :(
          猜你喜欢
          • 2013-10-22
          • 2014-02-19
          • 1970-01-01
          • 2020-11-21
          • 1970-01-01
          • 2012-11-30
          • 1970-01-01
          • 2014-03-21
          • 2014-06-27
          相关资源
          最近更新 更多