9
votes

Angularjs TypeError n'est pas une fonction

J'ai le code suivant dans mon service: xxx pré>

Ce que je veux faire est d'appeler cette fonction dans mon contrôleur lorsque la page (vue) est chargée. P>

testApp.controller('testController', ['$scope', '$location', 'databaseService','detailsService', '$routeParams', function($scope, $location, databaseService, $routeParams, detailsService){

    $scope.details;

    var selectedDetails = function(name){
             detailsService.getDetails(name).then(function(data){
            $scope.details= data;
        });
    };

    selectedDetails(name);

}]);


1 commentaires

3 Réponses :


11
votes

L'erreur est attendue car vous n'allez pas injection de dépendances correctement, vous devez utiliser la séquence correcte.

testApp.controller('testController', ['$scope', 
    '$location', 
    'databaseService',
    'detailsService', 
    '$routeParams', 
    function($scope, $location, databaseService, $routeParams, detailsService){


1 commentaires

Je veux juste ajouter, cette question expliquera ce que les [] sont tous sur ceux qui ne savent pas, et veulent. Stackoverflow.com/Questtions/18032068/...



0
votes

Supprimer la promesse dans le service.Juste retour de la demande. Puisque vous attrapez la promesse du contrôleur, il n'est pas nécessaire de l'utiliser dans le service

testApp.controller('testController', ['$scope', '$location', 'databaseService', 'detailsService', '$routeParams', function($scope, $location, databaseService, detailsService , $routeParams) {
    $scope.details;
    var selectedDetails = function(name) {
        detailsService.getDetails(name).then(function(data) {
            $scope.details = data;
        });
    };
    selectedDetails(name);
}]);


0 commentaires

0
votes

J'ai reçu cette erreur car j'avais ajouté une méthode de rappel à un composant, mais le rappel n'a pas été utilisé par toutes les pages où ce composant a été utilisé:

if (undefined !== this.myCallbackFn) this.myCallbackFn();


0 commentaires