Heim  >  Artikel  >  Backend-Entwicklung  >  javascript - Broadcast und on werden in Angular verwendet. Warum wird der Code in on nicht jedes Mal erfolgreich ausgeführt?

javascript - Broadcast und on werden in Angular verwendet. Warum wird der Code in on nicht jedes Mal erfolgreich ausgeführt?

WBOY
WBOYOriginal
2016-10-22 00:14:14877Durchsuche

<code>var app = angular.module('gzmu', ["ngRoute",'chart.js']);
app.run(function ($rootScope, $http) {

    $http({
        method: 'GET',
        url: 'datacon/user_info.php',

    }).success(function (response) {



            $rootScope.userinfo = response[0];
        console.log($rootScope.userinfo)
        $rootScope.$broadcast("userinfo", response[0]);



    })
});
app.controller('data', function ($scope, $http, $rootScope) {
    $scope.usernamea='';
    $scope.$on("userinfo",
        function (event, msg) {
            console.log(msg);
            if(msg){
                $scope.usernamea = msg.user;
                console.log($scope.usernamea)
                alert($scope.usernamea)
            }
            else{
                alert(msg)
            }

        });
});</code>

Wie bereits erwähnt, warum wird der Code nicht jedes Mal ausgeführt, wenn die Seite geladen wird?

Antwortinhalt:

<code>var app = angular.module('gzmu', ["ngRoute",'chart.js']);
app.run(function ($rootScope, $http) {

    $http({
        method: 'GET',
        url: 'datacon/user_info.php',

    }).success(function (response) {



            $rootScope.userinfo = response[0];
        console.log($rootScope.userinfo)
        $rootScope.$broadcast("userinfo", response[0]);



    })
});
app.controller('data', function ($scope, $http, $rootScope) {
    $scope.usernamea='';
    $scope.$on("userinfo",
        function (event, msg) {
            console.log(msg);
            if(msg){
                $scope.usernamea = msg.user;
                console.log($scope.usernamea)
                alert($scope.usernamea)
            }
            else{
                alert(msg)
            }

        });
});</code>

Wie bereits erwähnt, warum wird der Code nicht jedes Mal ausgeführt, wenn die Seite geladen wird?

Der Hauptgrund ist, dass die Übertragung während der Ausführung der App tatsächlich ein asynchroner Vorgang ist. Wenn der Datencontroller während der Ausführung erfolgreich angefordert und vor der Übertragung erstellt wird, wird er erfolgreich aufgerufen, andernfalls erhält er die Informationen nicht von der Wurzel gesendet

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn