10
votes

CENSOURNÉE RéférenceError: L'application n'est pas définie dans AngularJS

J'ai eu cette erreur. J'ai parcouru les réponses postées précédemment mais j'ai toujours le même problème.

index.html xxx

app.js xxx

logincontroller.js xxx

Vérifiez le code et dites-moi où je fais une erreur.


5 commentaires

Pourquoi enveloppez-vous votre code App.js dans une fonction anonyme?


J'ai lu le parcours de Dan Wahlin ... ils ont fait comme ça, donc je suis leur méthode


Ce n'est pas nécessaire. Faire cela est limiter la portée de la variable app uniquement à cette fonction et que vous essayez d'utiliser cela dans un autre fichier. Il suffit de supprimer cette fonction anonyme et il fonctionnera.


Merci, le problème a été résolu mais montre une autre erreur: [$ INJUSTEUR: LEVRUNIVE DEVENNEMENT: DataProvider <- Données


J'ai donné cela dans ma réponse ci-dessous, veuillez supprimer Data Dépendance à partir de vos injections de dépendance du contrôleur. Il y a plus de choses à réparer dans votre code. Alors regardez ma réponse.


5 Réponses :


2
votes

Votre application est définie à l'intérieur de la fonction anonyme. L'application a donc la portée. Essayez de créer une variable d'application globale.

(function(){

 app= angular.module('customersApp',['ngRoute']);

app.config(['$routeProvider',
  function ($routeProvider) {
        $routeProvider.
        when('/login', {
            title: 'Login',
            controller: 'loginController',
               templateUrl: 'app/views/loginuser.html'
        })
            .when('/logout', {
                title: 'Logout',
                templateUrl: 'partials/login.html',
                controller: 'loginController'
            })

            .when('/dashboard', {
                title: 'Dashboard',
                templateUrl: 'app/views/dynamic_table.html',
                controller: 'loginController'
            })
            .when('/signup', {
                title: 'Signup',
                templateUrl: 'app/views/registration.html',
                controller: 'loginController'
            })

            .otherwise({
                redirectTo: '/login'
            });
  }]);

}());


1 commentaires

aidé, global à Index.js. J'utilise la navigation de navigation, vous ne pouvez donc éliminer aucune fonction anonyme. Browserify les ajoute de toute façon



10
votes

C'est une bonne leçon sur la portée. Emballage des choses dans des fonctions anonymes ( Fonction () {...} ()); ) fera des variables déclarées à l'intérieur de cette fonction invisible à des choses en dehors de la fonction. Je ne passerai pas sur toutes les choses javascript dans cette réponse car il est bien documenté sur de nombreuses autres questions mais essentiellement, c'est votre problème; xxx

en bref supprimez la fonction anonyme qui est dans votre app.js ou déclarer le < Code> app variable en dehors de la fonction.


0 commentaires

2
votes

Supprimer la fonction anonyme de l'APP.JS J'aime:

var app= angular.module('customersApp',['ngRoute']);

app.config(['$routeProvider',
  function ($routeProvider) {
        // rest of the code
  }]);


0 commentaires

12
votes

On dirait que toutes les autres réponses proviennent de personnes sans connaissance des JS angulaires et uniquement de JavaScript. Ils donnent tous la même réponse erronée, ce qui peut faire fonctionner le code, mais introduire une mauvaise pratique.

Emballage de votre code dans une fonction anonyme est bien! P>

Ce n'est pas le problème. Le problème est que vous mettez votre contrôleur dans un fichier séparé, mais vous avez oublié de le mettre dans un module séparé aussi. P>

logiffontroller.js p>

var app= angular.module('customersApp',['ngRoute','customersApp.loginController']);


2 commentaires

Mettre le contrôleur dans un fichier séparé avec le même module est bien (tant qu'ils sont liés). Le code fourni par l'OP créera un Réfecteur de référence car l'application est hors de portée.


Faire cela inutilement obscurcit votre code afin que cela devrait être considéré comme une mauvaise pratique. Il n'y a aussi rien qui indique à l'idée qu'il s'agissait d'un choix de conception délibéré par OP.



4
votes

avait la même erreur. Dans mon cas, c'était l'ordre des fichiers JavaScript.

Je devais vous assurer qu'Apl.js a été déclaré avant le fichier Service.js (le fichier qui avait une référence à l'application). P>

<script src="app.js"></script>
<script src="/Scripts/Service.js"></script>


0 commentaires