使用Angular的$ resource查询和参数

时间:2017-02-09 22:15:13

标签: angularjs ngresource

我想在使用工厂的控制器中获取数据:

controller.js

  $scope.days = [function(start, end, timezone, callback) {
      calendarFactory.query({
        userId: $scope.userId
      })
      .$promise.then(function(data) {
          angular.forEach(data,function(day){
              days.push({
                  id: day.id,
                  title: day.title,
                  start: day.start
              });
          });
          callback(days);
      });
  }];
}

services.js

.factory('calendarFactory', ['$resource', 'baseURL', function($resource, baseURL) {

  return $resource(baseURL + 'days/:id', null, {
      'update': {
          method: 'PUT'
      },
      'query': {
          method: 'GET',
          isArray: true
      }
  });

}])

天对象如下所示:

{
"start": "2017-02-09T00:00:00.000Z",
"allDay": true,
"userId": "1",
"id": "589cdc7e7ff9810a76a664ec"
}

我想使用特定的days查询userId。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

您需要为每种方法指定不同的网址。

然后在你的网址中使用多个参数:

'query' : { 
    url: baseURL + '/:days/:id',
    method: 'GET', 
    params:{ 
        day:'@days', 
        id: '@id'
    }
}

答案 1 :(得分:0)

根据@Yaser的回答,我找到了这个解决方案:

.factory('dayFactory', ['$resource', 'baseURL', function($resource, baseURL) {

    return $resource(baseURL + 'customers/:id/days/:daysId', null, {
            id: '@Id',
            daysId: '@daysId'
        },
        {
        'update': {
            method: 'PUT'
        },
        'query': {
            method: 'GET',
            isArray: true
        }
    });

}])