gpt4 book ai didi

javascript - Angular : factory $http service

转载 作者:IT王子 更新时间:2023-10-29 03:09:04 24 4
gpt4 key购买 nike

我试图理解 Angular 中工厂和服务的概念。我在 Controller 下有以下代码

init();

function init(){
$http.post('/services', {
type : 'getSource',
ID : 'TP001'
}).
success(function(data, status) {
updateData(data);
}).
error(function(data, status) {

});

console.log(contentVariable);
};
function updateData(data){
console.log(data);
};

这段代码工作正常。但是当我将 $http 服务移入工厂时,我无法将数据返回给 Controller 。

studentApp.factory('studentSessionFactory', function($http){
var factory = {};
factory.getSessions = function(){
$http.post('/services', {
type : 'getSource',
ID : 'TP001'
}).
success(function(data, status) {
return data;
}).
error(function(data, status) {

});
};
return factory;
});

studentApp.controller('studentMenu',function($scope, studentSessionFactory){
$scope.variableName = [];
init();
function init(){
$scope.variableName = studentSessionFactory.getSessions();
console.log($scope.variableName);
};
});

使用工厂有什么好处吗,因为 $http 即使在 Controller 下也能工作

最佳答案

studentSessions 服务移出 Controller 的目的是实现关注点分离。您的服务的工作是了解如何与服务器对话,而 Controller 的工作是在 View 数据和服务器数据之间进行转换。

但是您混淆了异步处理程序以及返回的内容。当稍后接收到数据时, Controller 仍然需要告诉服务做什么......

studentApp.factory('studentSession', function($http){
return {
getSessions: function() {
return $http.post('/services', {
type : 'getSource',
ID : 'TP001'
});
}
};
});

studentApp.controller('studentMenu',function($scope, studentSession){
$scope.variableName = [];

var handleSuccess = function(data, status) {
$scope.variableName = data;
console.log($scope.variableName);
};

studentSession.getSessions().success(handleSuccess);
});

关于javascript - Angular : factory $http service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com