javascript - angular中使用了broadcast和on,為什麼on裡面的代碼不是每次都成功運行?

來源:互聯網
上載者:User
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)            }        });});

如題,on裡面的代碼為什麼不會每載入一次頁面都運行一次?

回複內容:

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)            }        });});

如題,on裡面的代碼為什麼不會每載入一次頁面都運行一次?

主要原因是在app的run中broadcast其實是一個非同步作業,如果說data這個Controller在run中的請求成功並且broadcast之前建立,就會成功調用,否則它接收不到root廣播過來的資訊

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.