簡體   English   中英

AngularJS 從 addEventListener 返回范圍內的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM