var app = angular.module("MyApp", []);
app.factory("myFactory", function ($http) {
return {
getDatas: function () {
var args = {};
var url = "test.req";
$http({
method: 'POST',
data: args,
url: url
}).success(function (response, status, headers, config) {
return response;
}).error(function (response, status, headers, config) {
alert(status + response);
});
}
};
});
app.controller("myCtrl", function ($scope, myFactory) {
$scope.names = {};
$scope.title = myFactory.msg;
alert(myFactory.getDatas());
$scope.names = myFactory.getDatas();
});
Dans le code ci-dessus, alert(myFactory.getDatas());
si la valeur de factory ne peut pas être obtenue, undefined sera affiché.
Affichage de débogage du navigateur :
angular1.5.3.min.js:6Erreur non détectée : [$injector:modulerr]
L'usine peut obtenir des données du backend, mais le contrôleur ne sait pas comment obtenir les données d'usine les uns des autres....
Je viens de commencer à regarder angulaire récemment...
Vous voyez, la méthode getDatas est en fait un corps d'exécution de fonction asynchrone. Une fois getDatas exécuté, $http demandera de manière asynchrone les données back-end. Cependant, une fois getDatas exécuté, il revient et alert ne peut pas obtenir la valeur.