4
根据developer guide我应该能够从$window
的角度表达式访问浏览器窗口。从角度表达式访问窗口
与JavaScript不同,其中名称默认为全局窗口属性,Angular表达式必须使用$ 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())
也不起作用。
我在这里错过了什么?
这个答案是正确的,但似乎AngularJS的新版本(我是1.2 .4)由于安全原因不允许从表达式访问窗口对象,并且你得到这个[error](http://docs.angularjs.org/error/$parse:isecwindow?p0=$window.alert()如果你尝试的话,那么我不能说文档是非常一致的......然后我将这个警报调用包装在一个控制器函数中,并使用表达式。 – tamacun
You are right @tamacun –