Javascript 理解控制器和服务交互

Javascript 理解控制器和服务交互,javascript,angularjs,angular-promise,Javascript,Angularjs,Angular Promise,使用AngularJS,我试图实现一个简单的服务,该服务从REST服务返回一个客户端列表,该服务在控制器中可用 我一直在琢磨如何正确地将数据传递给控制器。下面是我的服务,它可以很好地提取数据。我已经核实了数据在那里 app.service('clientsService', ['$http', function ($http) { var serviceBase = 'http://localhost:56879/api/'; this.getClients = functi

使用AngularJS,我试图实现一个简单的服务,该服务从REST服务返回一个
客户端列表,该服务在控制器中可用

我一直在琢磨如何正确地将数据传递给控制器。下面是我的服务,它可以很好地提取数据。我已经核实了数据在那里

app.service('clientsService', ['$http', function ($http) {

    var serviceBase = 'http://localhost:56879/api/';

    this.getClients = function () {

        return $http.get(serviceBase + 'clients').then(function (results) {
            console.log(results.data);
            return results.data;
        });
    };
}]);
接下来,我尝试在控制器中使用它

app.controller('clientsController', ['$scope', 'clientsService', function ($scope, clientsService) {
    this.clients = clientsService.getClients();

    console.log(this.clients);
}]);
在此控制器中,
this.clients
不包含数据,它只包含一个try-catch块


我还不能完全理解我在将数据从服务传递到控制器时所做的错误操作。

这是因为
getClients
方法返回的是一个,而不是数据。承诺解析为在回调中返回数据。您在控制台中看到的方法是服务方法返回的promise对象的方法。所以,您应该注册一个对
的回调,然后注册
承诺方法:-

 var _that = this;
 clientsService.getClients().then(function(data) { //Runs when promise is resolved
   _that.clients = data;
 }).catch(function(){ //<-- Runs if the promise is rejected 

 });
var=this;
clientsService.getClients()。然后(函数(数据){//在解析承诺时运行
_客户=数据;

}).catch(function(){/这是因为
getClients
方法返回的是一个,而不是数据。promise解析为在回调中返回数据。您在控制台中看到的方法是服务方法返回的promise对象的方法。因此,您应该向
注册回调,然后注册promise的
方法:-

 var _that = this;
 clientsService.getClients().then(function(data) { //Runs when promise is resolved
   _that.clients = data;
 }).catch(function(){ //<-- Runs if the promise is rejected 

 });
var=this;
clientsService.getClients()。然后(函数(数据){//在解析承诺时运行
_客户=数据;

}).catch(function(){/这是因为
getClients
方法返回的是一个,而不是数据。promise解析为在回调中返回数据。您在控制台中看到的方法是服务方法返回的promise对象的方法。因此,您应该向
注册回调,然后注册promise的
方法:-

 var _that = this;
 clientsService.getClients().then(function(data) { //Runs when promise is resolved
   _that.clients = data;
 }).catch(function(){ //<-- Runs if the promise is rejected 

 });
var=this;
clientsService.getClients()。然后(函数(数据){//在解析承诺时运行
_客户=数据;

}).catch(function(){/这是因为
getClients
方法返回的是一个,而不是数据。promise解析为在回调中返回数据。您在控制台中看到的方法是服务方法返回的promise对象的方法。因此,您应该向
注册回调,然后注册promise的
方法:-

 var _that = this;
 clientsService.getClients().then(function(data) { //Runs when promise is resolved
   _that.clients = data;
 }).catch(function(){ //<-- Runs if the promise is rejected 

 });
var=this;
clientsService.getClients()。然后(函数(数据){//在解析承诺时运行
_客户=数据;

}).catch(function(){/您可以查看ngResource服务,它非常易于使用。它基于$http,但有一点抽象:


$resource

您可以看看ngResource服务,它非常易于使用。它基于$http,但有一点抽象:


$resource

您可以看看ngResource服务,它非常易于使用。它基于$http,但有一点抽象:


$resource

您可以看看ngResource服务,它非常易于使用。它基于$http,但有一点抽象:

$resource