Доступ к окну из углового выражения
Согласно руководству разработчика, я должен иметь доступ к окну браузера изнутри угловых выражений с помощью $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'));