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 поддерживать разумную производительность.