SORU
27 Kasım 2013, ÇARŞAMBA


Enjekte $devlet (uı-router) $http avcı neden içine döngüsel bağımlılık

Başarmak için çalışıyorum

$Http isteği 401 hatası döndürür halinde, belli bir devlet (giriş) geçiş yapmak istiyorum. Bu nedenle $http avcı oluşturduk.

Sorun

Eklemeye çalışıyorum zaman '$' ınterceptor içine dairesel bir bağımlılık. devlet Neden ve nasıl düzeltebilirim?

Kod

//Inside Config function

    var interceptor = ['$location', '$q', '$state', function($location, $q, $state) {
        function success(response) {
            return response;
        }

        function error(response) {

            if(response.status === 401) {
                $state.transitionTo('public.login');
                return $q.reject(response);
            }
            else {
                return $q.reject(response);
            }
        }

        return function(promise) {
            return promise.then(success, error);
        }
    }];

    $httpProvider.responseInterceptors.push(interceptor);

CEVAP
27 Kasım 2013, ÇARŞAMBA


Düzeltme

$injector servis ** 5 hizmet için bir başvuru almak için kullanır.

var interceptor = ['$location', '$q', '$injector', function($location, $q, $injector) {
    function success(response) {
        return response;
    }

    function error(response) {

        if(response.status === 401) {
            $injector.get('$state').transitionTo('public.login');
            return $q.reject(response);
        }
        else {
            return $q.reject(response);
        }
    }

    return function(promise) {
        return promise.then(success, error);
    }
}];

$httpProvider.responseInterceptors.push(interceptor);

Neden

angular-ui-router ınterceptor gönderilmesi üzerine $httpProvider içinde $http kendisi için dairesel bir referans oluşturur $TemplateFactory bir bağımlılık gibi $http servis enjekte ediyor.

Aynı döngüsel bağımlılık hariç $http hizmet doğrudan bir avcı gibi yani içine enjekte etmeye çalışırsanız atılmış olacaktır.

var interceptor = ['$location', '$q', '$http', function($location, $q, $http) {

Endişeleri ayrılması

Dairesel bağımlılık istisnalar bir kararlılık sorunlarına neden olabilir uygulamanız içinde kaygıları karıştırma olduğunu gösterebilir. Eğer bu durum kendinizi bulursanız mimarisi de kendilerine başvuran sonuna kadar herhangi bir bağımlılıkları önlemek sağlamak için bakmak için zaman almalıdır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • atKristaBradford

    atKristaBrad

    4 Aralık 2010
  • CareyHolzman

    CareyHolzman

    24 Ocak 2008
  • HDstarcraft

    HDstarcraft

    12 Mayıs 2009