6

根据开发人员指南,我应该能够从 Angular 表达式内部访问浏览器窗口$window

与 JavaScript 的名称默认为全局窗口属性不同,Angular 表达式必须使用 $window 来引用全局窗口对象。例如,如果要调用定义在 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())也不起作用。

我在这里想念什么?

4

1 回答 1

7

$scope.$eval针对 进行评估$scope,因此只有将 $window 服务分配给范围成员时,您的评估才会起作用:

$scope.$window = $window;  
console.log($scope.$eval('$window'));
于 2014-01-08T14:29:21.173 回答