当尝试在$window.open()内的AngularJS中记录由$interval定义的窗口对象时,我遇到了很奇怪的行为

self = this
$scope.childWindow = $window.open(authService.buildAuthorizeUrl(), '_blank')
console.log $scope.childWindow
var1 = "I may not work"
self.var2 = 'I should work'
privateData.authInterval = $interval ->
  console.log $scope.childWindow
  console.log var1
  console.log self.var2
,
  1000

输出量
Window {document: document, window: Window, frameElement: null, clientInformation: Navigator, onhashchange: null…}
Window {}
I may not work
I should work
Window {}
I may not work
I should work

如您所见,第一个console.log $scope.childWindow输出一个完全定义的窗口对象。 $interval内部的所有其他参数仅输出{}。我尝试不将childWindow附加到$scope对象,并且尝试将其附加到self。我也尝试过this示例,并遇到了相同的行为。有人知道为什么会这样吗?非常感谢。

JSFiddle演示:http://jsfiddle.net/U3pVM/15124/

最佳答案

我在浏览器中尝试了您的代码,并在$ interval函数中设置调试点时,控制台中记录了一个空对象,但右侧的检查器显示$ scope.childWindow不为空。因此,您仅可以使用$ scope.childWindow。

09-19 14:36