Перехват параметров с помощью $httpBackend

Попытка получить параметр по этому URL-адресу: /api/events/{id}

$httpBackend.whenGET(/\/api\/events\/(.+)/, undefined, undefined, ['eventID'])
               .respond(function(method, url, data, headers, params) {
                    console.log('get-params: ', params);
                    return 'test';
                });

Также это не работает для меня:

$httpBackend.when('GET', /\/api\/events\/(.+)/).respond...

начиная с https://docs.angularjs.org/api/ngMock/service/$httpBackend (динамические ответы) это должно работать. Я что-то пропустил, или это баг?

Обратный вызов вызывается с URL-адресом типа: «/api/events/1», но параметры всегда остаются undefinded.

EDIT: Это должно появиться в AngularJS версии 1.5.0.


person WayneJohn    schedule 16.12.2015    source источник
comment
Попробуйте использовать отрицательный класс символов вместо .: /\/api\/events\/([^\/]+)/.   -  person Wiktor Stribiżew    schedule 16.12.2015
comment
Спасибо, тоже пытался и не получилось. Моя версия находится по адресу: AngularJS v1.4.7. (Смех тоже) Я мог бы попробовать самый новый.   -  person WayneJohn    schedule 16.12.2015
comment
Хорошо, нашел, эта функция появится в версии 1.5.0, которая все еще находится в разработке. Странно, что в этой версии документация по умолчанию.   -  person WayneJohn    schedule 16.12.2015


Ответы (1)


Для версий AngularJS ниже 1.5.0 это может быть простое решение для тестирования динамических URL-адресов с параметрами:

$httpBackend.when('GET', /\/api\/events\/.+/)
                .respond(function(method, url, data, headers) {
                    var args = url.match(/\/api\/events\/(.+)/);
                    console.log('some Data', url, args);
                    console.log('First Arg: ', args[1]);
                    return args[1];
                });
person WayneJohn    schedule 16.12.2015