2017-06-18 96 views
0

這是我的用於從服務器發送一個目的是工廠代碼:如何將數據從工廠傳遞給控制器​​?

app.post('/userdata',function(req,res){ 
    connection.query('select * from users',(err,rows)=>{ 
     sess = req.session; 
     for(var i = 0;i < rows.length; i++){ 
       var user = rows[i]; 
      if(sess.emails == user.user_email){ 
        sess.username = user.user_name, 
        sess.usersurname = user.user_surname, 
        sess.userid = user.user_id, 
        sess.userphoto = user.user_photo, 
        sess.balance = user.user_balance, 
        sess.currency = user.user_balance_currency 

        var UserData = { 
         id: sess.userid, 
         username: sess.username, 
         usersurname: sess.usersurname, 
         emails: sess.emails, 
         userphoto: sess.userphoto, 
         balance: sess.balance, 
         currency: sess.currency 
        } 

        res.json(UserData); 
      }; 

     }; 

    }) 
}); 

這裏是我在工廠從服務器接收所述對象的代碼:

angular.module('CoinKeeperApp').factory("CoinKeeperAPI", function ($http) { 
    return { 

      getUserData: function() { 

      $http.post('/userdata').then(function(response){ 


       var result = response.data.balance 
       console.log(result); 
        return result; 
      }) 
     } 
    } 
}); 

這裏是我的控制器編碼。我無法訪問從工廠收到的對象。

angular.module('Navigation', []) 

.controller("navCtrl", function (CoinKeeperAPI) { 
    this.CoinKeeperAPI = CoinKeeperAPI; 
     this.CoinKeeperAPI.getUserData(); 
     **this.balance = this.result;** 


}); 

我如何訪問控制器中的對象?

回答

1

要承諾接收數據,你需要在工廠的功能

在工廠退回它

angular.module('CoinKeeperApp').factory("CoinKeeperAPI", function ($http) { 
    return { 
     getUserData: function() { 
      return $http.post('/userdata').then(function(response){ 
       var result = response.data.balance 

       return result; 
      }) 
     } 
    } 
}); 

在控制器:

angular.module('Navigation', []) 
.controller("navCtrl", function (CoinKeeperAPI) { 
    var vm = this; 
    this.CoinKeeperAPI = CoinKeeperAPI; 
    this.CoinKeeperAPI.getUserData().then(function(result) { 
     vm.balance = result; 
    }); 
}); 

注:承諾是異步的,所有接收到的數據將僅在then連鎖調用被調用後纔可用。

+0

謝謝你的答案和你的幫助康斯坦丁阿齊佐夫。它爲我工作。非常感謝你!!!我感激你。 Sem! –

+0

不客氣! –

相關問題