【发布时间】:2014-01-26 17:04:51
【问题描述】:
根据developer guide,我应该能够使用$window 从Angular 表达式内部访问浏览器窗口。
与默认名称为全局窗口属性的 JavaScript 不同,Angular 表达式必须使用 $window 来引用全局窗口对象。例如,如果要调用定义在 window 上的 alert(),则必须在表达式中使用 $window.alert()。
但是,我似乎无法从使用$scope.$eval 评估的表达式中访问$window。
以下是我在退出控制台时得到的一些输出:
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()) 也不起作用。
我在这里错过了什么?
【问题讨论】:
-
如果你从 Angular 2+ 登陆这里,快速破解(如果你已经有一个 template variable
#someElem在周围)将是someElem?.innerElement?.nativeElement?.ownerDocument.defaultView(?为了安全) -解析为底层Window
标签: angularjs angularjs-scope window-object