AngularJs переменная окна просмотра

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

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

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

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

1 ответ

Решение

В некотором роде. Вы можете, если вы включите угловой $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 поддерживать разумную производительность.

Другие вопросы по тегам