Переменная окна окна AngularJs

В angularJs можно просмотреть глобальную переменную?

Я установил переменную window.test из устаревшего кода, тогда мне нужно посмотреть эту переменную, чтобы узнать, существует ли она.

Я пробовал что-то вроде

$window.$watch("test" , function(n,o){
    //some code here...
}

Ответ 1

Несколько. Вы можете включить, если вы включили службу Angular $window (что более безопасно, как описано в документах, а не напрямую на window):

app.controller('myCtrl', function ($scope,$window) {...}

И затем используйте функцию часов в качестве первого параметра для $watch следующим образом:

$scope.$watch(
    function () {
        return $window.test 
    }, function(n,o){
        console.log("changed ",n);
    }
);

демонстрационная скрипка

Но обратите внимание, что $watch не будет выполняться до тех пор, пока что-то не вызовет Angular, чтобы выполнить $digest. Один из возможных способов сделать это - обернуть свой устаревший код в $scope.$apply или вызвать $digest после того, как устаревший код будет эксплицирован. Вот некоторая хорошая документация по этому вопросу.

В принципе, всякий раз, когда изменение происходит за пределами Angular (например, это обычная проблема, когда jQuery вызывает изменение), что-то должно сказать Angular, чтобы посмотреть, что-то изменилось. Это один из способов Angular поддерживает разумную производительность.