Buongiorno a tutti.
Ho definito delle funzioni nel mio controller in AngularJS. Adesso, mi è stato chiesto, per ordine e completezza, di spostarle tutte in un service e invocarle dal controller.
Quello che dovrebbe accadere, è che il controller richiami la funzione del service, questa restituisca un dato e che il controller lo salvi in una variabile di $scope.
Per questo scopo, ho definito un mio service:
Quindi, provo ad invocare la funzione dal controller:codice:myApp.service('UserService', function($http) { this.getResellers = function(ssn) { return $http.get('http://localhost:8081/Reseller/findReseller' + ssn); } })
Ho lasciato nei commenti la versione originale della funzione del controller (perfettamente funzionante), che ora dovrebbe essere spostata nel service.codice:var myApp = angular.module("reseller", []); myApp.controller("resellerController", function($scope, $http, UserService) { $scope.ssn = null; $scope.reseller = null; $scope.noItem = false; /* $scope.getReseller = function() { $http.get('http://localhost:8081/Reseller/findReseller' + $scope.ssn).then( function(response) { console.log("Data correctly gathered"); $scope.reseller = response.data; if($scope.reseller.name == null) $scope.noItem = true; else $scope.noItem = false; }, function(response) { console.log("ERROR: " + response.message + " " + $scope.ssn); }) } */ UserService.getResellers($scope.ssn).then(function(data) { $scope.reseller = data; console.log("Reseller ricevuto con successo"); }).catch(function(error){ console.log(error); }) });
In ogni caso, con queste modifiche, non funziona più nulla ed ho questo errore in console:
Vi premetto che sono nuovo ad AngularJS ed ancora non riesco bene a capire come funzionino le pro. Buona parte del codice (a cui appartiene lo snippet che vi ho mostrato= è preso dal web e poi modificato.codice:angular.js:13294 Error: [$injector:unpr] http://errors.angularjs.org/1.5.2/$injector/unpr?p0=UserServiceProvider%20%3C-%20UserService%20%3C-%20resellerController at angular.js:38 at angular.js:4418 at Object.d [as get] (angular.js:4571) at angular.js:4423 at d (angular.js:4571) at e (angular.js:4595) at Object.invoke (angular.js:4617) at S.instance (angular.js:9897) at n (angular.js:8881) at g (angular.js:8260)
Sapreste dirmi dovre sbaglio?
Grazie.

Rispondi quotando