簡體   English   中英

AngularJS:在頁面之間共享數據

[英]Angularjs: share data between pages

我需要在兩個不同的頁面(login.html和index.html)之間共享數據。 我將服務定義如下:

.service('loginData', function LoginData(){
        var userData = '';
        this.addUser = function(name){
            this.userData = name;
            //return userData.user;
        }
        this.loggedUser = function(){
            return this.userData;
        }
})

為login.html定義的控制器:

.controller('loginCtrl',['$scope', '$http', '$window', 'loginData', function($scope, $http, $window, loginData){

    $scope.btnsubmit = function(username,password){

        //scope.user = data_to_send;
        var doc = [];
        $http.post('http://127.0.0.1:3000/authenticate',{user: username, pwd: password}            )
            .success(function(response) 
            {
                console.log('1 : ' + response);
                if (response != null){
                    console.log('2 : ' + angular.fromJson(response).user);
                    doc = angular.fromJson(response);
                    loginData.addUser(doc[0].user);
                    console.log(doc[0].user);
                    // if I call loginData.LoggedUser here -> it works
                }
            }).error(function()
            {
                console.log('error')
            });

        $window.location.href = 'index.html';
    }
}])

為index.html定義的控制器

.controller('profileCtrl', function(loginData){

    console.log(loginData.loggedUser());

})

如果我在登錄控制器中調用函數loginData.loggedUser,它會很好地工作。 另一方面,從索引控制器調用相同的函數將返回未定義。 我該如何解決? 謝謝!

服務是成角度的單例,因此,首先,我建議您檢查loginData實例。 第二步,如果所有實例都正確,則可以檢查運行順序。 第二個控制器最有可能在獲取值之前進行初始化,以及未定義未分配默認值的原因var userData = ''; 這是一個局部變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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