javascript - change - dynamic title angular 5
AngularJS: factory $ http service (2)
El propósito de mover el servicio de studentSessions
fuera de su controlador es lograr la separación de las preocupaciones. El trabajo de su servicio es saber cómo hablar con el servidor y el trabajo del controlador es traducir entre datos de vista y datos del servidor.
Pero estás confundiendo tus manejadores asíncronos y lo que está devolviendo qué. El controlador todavía necesita decirle al servicio qué hacer cuando los datos se reciban más tarde ...
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);
});
Estoy tratando de entender el concepto de fábrica y servicio en Angular. Tengo el siguiente código bajo el controlador
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);
};
Este código funciona bien. Pero cuando muevo el servicio $ http a la fábrica, no puedo devolver los datos al controlador.
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);
};
});
¿Hay alguna ventaja en el uso de fábrica, ya que $ http funciona incluso bajo el controlador?
La primera respuesta es excelente, pero quizás puedas entender esto:
studentApp.factory(''studentSessionFactory'', function($http){
var factory = {};
factory.getSessions = function(){
return $http.post(''/services'', {type :''getSource'',ID :''TP001''});
};
return factory;
});
Entonces:
studentApp.controller(''studentMenu'',function($scope, studentSessionFactory){
$scope.variableName = [];
init();
function init(){
studentSessionFactory.getSessions().success(function(data, status){
$scope.variableName = data;
});
console.log($scope.variableName);
};
});