AngularJS транслирует данные в iframe - PullRequest
0 голосов
/ 17 января 2019

Как я могу получить имя пользователя из index.html?

index.html

{{username}}

Контроллер индекса:

app.controller('index',function($scope,$rootScope,mainService){
    $scope.getUsername = funciton(){
        mainService.getUsername().then{
            function successCallback(response){
                $rootScope.username = response.data.username;
            }
        }
    }
})

iframe.html

{{user}}

контроллер iframe

app.controller('iframe',function($scope,$rootScope){
    $scope.user = $rootScope.username
})

но {{user}} ничего не показывать

Кроме того, я попытался отправить сообщение службой, как dataService.username результат такой же.

1 Ответ

0 голосов
/ 17 января 2019

Используйте $rootScope.$broadcast, чтобы вызвать событие, первый параметр для имени события и необязательный второй параметр для передачи аргумента.

app.controller('IndexController', function ($scope, $rootScope, MainService) {
    $scope.getUsername = function() {
        MainService.getUsername().then(function (response) {
            $rootScope.$broadcast('username-fetched', { username: response.data.username });
        });
    };
});

Затем перехватите событие на другом контроллере, используя $scope.$on.

app.controller('IframeController', function ($scope) {
    $scope.$on('username-fetched', function (event, data) {
        $scope.user = data.username;
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...