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

  • DorkmanScott

    DorkmanScott

    14 NİSAN 2006
  • sdasmarchives

    sdasmarchive

    2 HAZİRAN 2010
  • The Onion

    The Onion

    14 Mart 2006