Передать параметры с помощью службы Angular resource

0

Я хочу отправить некоторые параметры для выполнения 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 и collabId URL в URL.

Я пробовал это, но он не работает (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);
});

Я думаю, что я пропустил что-то в синтаксисе моего запроса в своем контроллере. Можете ли вы помочь мне найти, что здесь не так?

Благодаря :)

Теги:
promise

4 ответа

0
Лучший ответ

В 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);
});
0

Это хорошо работает, вы должны попробовать:

//Обслуживание

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);
});
0

В предыдущем решении была небольшая ошибка. Я немного переработал его и смог заставить это работать для меня.

// 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);
});
0

Это должно работать:

// 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);
});
  • 0
    Здравствуйте, нет, это не работает. Это соответствует URL, но я получаю 2 Bad Request :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню