根据开发人员指南,我应该能够从Angular表达式中访问浏览器窗口$window
.
与JavaScript不同,其中names默认为全局窗口属性,Angular表达式必须使用$ 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())
也不起作用.
我在这里错过了什么?
$scope.$eval
评估$scope
,因此只有在为范围成员分配$ window服务时,您的评估才会起作用:
$scope.$window = $window; console.log($scope.$eval('$window'));