Доступ к окну из углового выражения

Согласно руководству разработчика, я должен иметь доступ к окну браузера изнутри угловых выражений с помощью $window,

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

Однако я не могу получить доступ $window из выражений, оцененных с $scope.$eval, Вот некоторые результаты, которые я получаю при выходе из консоли:

console.log($window);                   // the Window object as expected
console.log($scope.$eval('$window'));   // undefined
console.log($scope.$eval('1+1'));       // 2
console.log($scope.$eval('scopeVar'));  // 'abc'

Контроллер имеет $window как зависимость. Я могу получить доступ к переменным области видимости и другим службам из выражений, но не $window, так $scope.$eval($window.alert()) тоже не работает.

Что мне здесь не хватает?

1 ответ

Решение

$scope.$eval оценивает против $scopeТаким образом, ваша оценка будет работать, только если вы назначите $window service члену области:

$scope.$window = $window;  
console.log($scope.$eval('$window'));
Другие вопросы по тегам