Используйте $routeParams в сервисе

Я пытаюсь добавить параметр запроса ко всем вызовам API, которые я получаю из URL-адреса.

factory('Post', function ($resource, $routeParams) {
    return $resource('api/posts', {customer_id: $routeParams.customerId});
})

Это работает при первом использовании почтовой службы, но при втором внедрении она уже инициализирована и использует первый идентификатор клиента, хотя URL-адрес изменился.

Как мне заставить это работать так, как задумано?


person user2906759    schedule 21.02.2014    source источник


Ответы (1)


Потому что сервисы являются синглтонами. Вот почему вы получаете такое поведение.

Я рекомендую не вводить $routeParams в качестве параметров инициализации службы. Вместо этого введите его в контроллеры, а затем вызовите функции службы, используя значения в $routeParams в качестве параметров.

Код может понравиться:

factory('Post', function ($resource) {
    return {
        doPost: function(customerId) {
            $resource('api/posts', {customer_id: customerId});
        }
    };
});

//...
//in some controller
Post.doPost($routeParams.customerId)
person Stoneboy    schedule 21.02.2014