angular.js - Bagaimana untuk menggunakan angular's run untuk menyimpan data pengguna?
怪我咯
怪我咯 2017-05-15 17:07:45
0
1
810

Saya ingin menetapkan $rootScope.userinfo melalui run, dan kemudian dalam halaman yang berbeza, saya juga boleh menggunakan $rootScope.userinfo untuk mendapatkan maklumat pengguna semasa tanpa pergi ke pelayan untuk merangkaknya, tetapi sekarang saya telah menemui banyak masalah.
Buat pertama kali, saya terus $http dalam larian dan kemudian menetapkan $rootScope.userinfo=response, dan kemudian menggunakan $scope.userinfo=$rootScope.userinfo dalam setiap pengawal untuk menangkap maklumat pengguna ini ke dalam skop semasa untuk digunakan, tetapi Masalah yang tidak jelas berlaku;
Kali kedua saya menggunakan siaran dalam larian

        $rootScope.$broadcast("thisintheuserinfo", response);

Kemudian gunakan $on

dalam pengawal
$scope.$on("thisintheuserinfo",
        function (event, msg) {
            if(msg){
                //$scope.usernamea = msg.user;
                console.log('123')
                console.log(msg)
            }
            else{
                alert(msg)
            }

        });

Tetapi terdapat masalah bahawa kod dalam fungsi $on hampir tidak pernah dijalankan. Walau apa pun, lebih banyak salah dan kurang betul.
Jadi saya tidak tahu sama ada anda mempunyai kaedah yang bagus yang boleh saya pelajari?

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(1)
刘奇

Pada asasnya memenuhi keperluan, mungkin ada sedikit kesan sampingan.

var app = angular.module('myApp', []);

app.factory('User', function($q, $timeout){
    var userInfo, 
        loading, 
        deferred = $q.defer(),
        promise  = deferred.promise;

    return {
        getUserInfo: function(){

            if(!loading){
                loading = true;
                // 模拟http请求
                console.log('发起请求...')
                $timeout(function(){
                    userInfo = {
                        name: 'Angularjs',
                        version: '1.x'
                    };
                    deferred.resolve(userInfo);

                }, 100);

                return promise;

            }else if( userInfo ){
                console.log('这是缓存的信息');
                return $q.resolve(userInfo);
            }else{
                console.log('正在等待请求的结果...');
                return promise;
            }
        }
    }
});

app.controller('MyCtrl',function($scope, User, $timeout){
    User.getUserInfo().then(function(userInfo){
        console.log('run:',userInfo);
        $scope.name = userInfo.name;
    });
});

app.run(function(User){
    User.getUserInfo().then(function(userInfo){
        console.log('controller:',userInfo);
    });
})
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan