2017-06-18 100 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

不客气! –

相关问题