2017-01-25 3 views
1

Я заменяемое по умолчанию $exceptionHandler, подобно тому, что видели здесь, на месте углового-х: https://docs.angularjs.org/api/ng/service/ $ ExceptionHandler

отлично работает.

Тем не менее, я не совсем понимаю, как «наблюдать» этот процесс, если не $emit «Идентификатор обработчика именованного события явно передает ошибку (вызванную или иным образом) вниз в $ exceptionHandler (который вводится в `.directive || .config || .service | .run || и т. д.).

TL: DR - Я хотел бы знать, как моделировать необработанное исключение, которое по умолчанию будет определять угловой $ exceptionHandler, в частности, из хром-консоли/REPL?

ответ

1

Вам необходимо запустить код, который генерирует исключение в цикле дайджеста. Более конкретно вам необходимо передать его $apply, так как $digest сам не использует $exceptionHandler.

Псевдокод $apply:

function $apply(expr) { 
    try { 
    return $eval(expr); 
    } catch (e) { 
    $exceptionHandler(e); 
    } finally { 
    $root.$digest(); 
    } 
} 

Так из консоли вы можете, например, сделать это:

window.test = function(fn) { 
    angular.element(document.querySelector('.ng-scope')) 
    .injector() 
    .get('$rootScope') 
    .$apply(fn); 
} 

window.test(function() { var a = b; }); 

window.test(function() { throw "Error"; }); 
+0

Работал как шарм - спасибо! –

+0

@BrandtSolovij Добро пожаловать :) – tasseKATT

Смежные вопросы