[英]AngularJS return value in the scope from an addEventListener
我在 iframe 中有一個 AngularApp,我有一個帶有此代碼的控制器,用於從 iframe 容器(主窗口)獲取單擊事件:
$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
之外仍然未定義。
任何提示?
這也應該有效:
$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);
Yaa 那是因為 javascript 具有函數級作用域,這意味着您需要將 e 傳遞給您提供給$scope.$apply
函數,否則該函數將沒有事件對象。
這樣做應該會有所幫助。
$scope.$apply(function(e) {
console.log(e.data.url);
$scope.widget.pageUrl = e.data.url;
});
不過我還沒有測試過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.