从Angular表达式访问窗口



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

与JavaScript不同,在JavaScript中,名称默认为全局窗口属性,Angular表达式必须使用$window来引用全局窗口对象。例如,若要调用在window上定义的alert(),则在表达式中必须使用$window.art().

但是,我似乎无法从用$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())也不起作用。

我在这里错过了什么?

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

$scope.$window = $window;  
console.log($scope.$eval('$window'));

相关内容

  • 没有找到相关文章

最新更新