2017-04-26 3 views
0

Ich arbeite an einem ionischen Projekt und versuche eine Factory-Methode von einem Controller aus aufzurufen. Diese Factory-Methode befindet sich in einer separaten Datei. In diesem Fall erhalte ich den folgenden Fehler.

Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope <- loginService 

Hier meine Dateien sind:

services.js

angular.module('starter.services', ['starter.constants']) 
.factory('loginService', function($scope, $http,constants) { 
var lgurl = constants.BASE_URL+constants.User_Login; 
return { 
loginXmanager: function(username,password,deviceID,deviceType){ 
/*Demo*/ 
    return $http.post(lgurl).then(function(response){ 
    users = response; 
    return users; 
    }); 
    } 
} 
}); 

controllers.js

angular.module('starter.controllers', ['starter.services']) 

.controller('AppCtrl',['$scope', 'loginService',function($scope, 
$ionicModal, $timeout,loginService) { 


// Form data for the login modal 
$scope.loginData = {}; 

// Create the login modal that we will use later 
$ionicModal.fromTemplateUrl('templates/login.html', { 
    scope: $scope 
}).then(function(modal) { 
    $scope.modal = modal; 
}); 

// Triggered in the login modal to close it 
    $scope.closeLogin = function() { 
    $scope.modal.hide(); 
}; 

// Open the login modal 
    $scope.login = function() { 
    $scope.modal.show(); 
}; 


$scope.doLogin = function() { 
    console.log('Doing login'); 
    var usrnm = $scope.loginData.username; 
    var pass = $scope.loginData.password; 
    var deviceID = "1234"; 
    var deviceType = "any"; 
    console.log('username - '+usrnm); 
    console.log('password - '+pass); 
    if (loginService) { 
    loginService.loginXmanager(usrnm,pass,deviceID,deviceType); 
    }else{ 
    console.log("loginService error"); 
} 

}; 
}]) 

Was hier die Frage zu sein scheint Jede Hilfe ist willkommen.

+1

$ scope wird nur verwendet, um mit der Ansicht zu verbinden ... eine Fabrik macht das nicht – charlietfl

Antwort

2

Sie erhalten diesen Fehler, weil Sie nicht $scope in einer Fabrik injizieren. Also, ändern Sie Ihre Fabrik zu:

Auch in Ihrem Controller sind Injektionen nicht vollständig zur Verfügung gestellt und sind außer Betrieb. Es sollte wie folgt sein:

1

kann innerhalb der Fabrik keine Scope-Variablen verwenden. den scope Injektor aus der Fabrik entfernen

diese Änderung

.factory('loginService', function($scope, $http,constants) { 

diesen

.factory('loginService', function($http,constants) { 

Auch in der Steuerung das Format folgen, wenn Service Injektion als String

Änderung dieser

Werte
.controller('AppCtrl',['$scope', 'loginService',function($scope, 
$ionicModal, $timeout,loginService) { 

dieser

.controller('AppCtrl',['$scope','$ionicModal','$timeout','loginService', function($scope, 
$ionicModal, $timeout,loginService) { 
Verwandte Themen