我在iframe中有一个AngularApp,我有一个带有此代码的控制器来从iframe容器(主窗口)获取click事件:
$window.addEventListener('message', function(e) {
$scope.$apply(function() {
console.log(e.data.url); // http://<something>
$scope.widget.pageUrl = e.data.url;
});
});
console.log($scope.widget.pageUrl); // undefined
一切正常,但我无法填充$ scope.widget.pageUrl变量。它在$ window.addEventListener之外仍未定义。
任何提示?
答案 0 :(得分:1)
这也应该有效:
$window.addEventListener('message', function (e) {
console.log(e.data.url); // http://<something>
$scope.widget.pageUrl = e.data.url;
$scope.$apply();
});
console.log($scope.widget.pageUrl);
答案 1 :(得分:0)
Yaa,因为javascript具有函数级别范围,这意味着您需要将e传递给您提供给$scope.$apply
的函数,否则此函数将不具有事件对象。
这样做应该有所帮助。
$scope.$apply(function(e) {
console.log(e.data.url);
$scope.widget.pageUrl = e.data.url;
});
我还没有测试过它。