当尝试在$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。