2013-10-24 40 views
22

Çok standart bir görev uygulamaya çalışıyorum: bir istisna oluştuğunda, /error sayfama yönlendir. basitleştirilmiş formda

kod şuna benzer: Ancak

app.factory('$exceptionHandler', ['$location', function($location) { 
    return function(exception, cause) { 
     $location.path("/error"); 
    }; 
}]); 

, angularjs yakınır: bulundu Döngüsel bağımlılık: $ konumu < - $ exceptionHandler < - $ rootScope

Bu gibi görünüyor istisnaları kullanırken $location kullanımına izin vermemek için temel bir sınırlama.

Ama başka nasıl yapabiliriz?

+0

(http://code.angularjs.org/1.2.0-rc .3/docs/api/ng. $ Location), '$ location' için tek bağımlılıklar' $ browser', '$ sniffer' ve' $ rootElement'. Bu kodun neden bu hatayı attığını anlamıyorum ... üzgünüm, fazla yardım etmiyorum. Dokümanlar içinde olmayan gizli bir bağımlılık olmalı ... – tennisgent

cevap

44

zamanında bağımlılığı gidermek için el $injector çağırmanız gerekir Bundan kaçınmak için: [dokümanlar] göre

app.factory('$exceptionHandler', ['$injector', function($injector) { 

    var $location; 

    return function(exception, cause) { 
     $location = $location || $injector.get('$location'); 
     $location.path("/error"); 
    }; 
}]); 
+0

Çok teşekkür ederim, bu işe yaradı! –