Javascript 理解控制器和服务交互
使用AngularJS,我试图实现一个简单的服务,该服务从REST服务返回一个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
客户端列表,该服务在控制器中可用
我一直在琢磨如何正确地将数据传递给控制器。下面是我的服务,它可以很好地提取数据。我已经核实了数据在那里
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