В соответствии с developer guide я должен иметь доступ к окну браузера изнутри Угловые выражения с $window
.Доступ к окну из углового выражения
В отличие от JavaScript, где имена по умолчанию являются глобальными свойствами окна, Угловые выражения должны использовать $ window для ссылки на глобальный объект окна. Например, если вы хотите вызвать alert(), который определен в окне, в выражении вы должны использовать $ 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())
тоже не работает.
Что мне здесь не хватает?
Этот ответ является правильным, но это, кажется, более новые версии AngularJS (я на 1,2 .4) не позволяет получить доступ к объекту окна из выражений из-за соображений безопасности, и вы получите эту [ошибку] (http://docs.angularjs.org/error/$parse:isecwindow?p0=$window.alert() если вы попытаетесь. Я не могу сказать, что документация очень последовательна, тогда ... Я просто завершу вызов предупреждения в функцию контроллера и использую это из выражений. – tamacun
Вы правы @tamacun –