Uncaught ReferenceError: app ist nicht definiert Angularjs
Bekam ich diese Fehlermeldung. Ich schaute durch die Antworten bisher aber ich habe noch das gleiche problem.
index.html
<html lang="en" ng-app="customersApp">
<head>
<link rel="shortcut icon" href="img/favicon.html">
<title>Vizavoo</title>
<!-- Bootstrap core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/bootstrap-reset.css" rel="stylesheet">
<link href="assets/font-awesome/css/font-awesome.css" rel="stylesheet" />
<!--external css-->
<link href="css/slidebars.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="css/style.css" rel="stylesheet">
<link href="css/style-responsive.css" rel="stylesheet" />
</head>
<body>
<div ng-view></div>
<!-- js placed at the end of the document so the pages load faster -->
<script src="scripts/angular.js"></script>
<script src="scripts/angular-route.js"></script>
<script src="app/app.js"></script>
<script src="app/controllers/loginController.js"> </script>
<script src="js/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
<!-- Mirrored from thevectorlab.net/flatlab/login.html by HTTrack Website Copier/3.x [XR&CO'2014], Mon, 08 Dec 2014 06:09:06 GMT -->
</html>
app.js
(function(){
var 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'
});
}]);
}());
loginController.js
app.controller('loginController', function ($scope,$http, Data) {
//initially set those objects to null to avoid undefined error
$scope.login = {};
$scope.signup = {};
$scope.doLogin = function (customer) {
$.post("http://dev.miniluxe.com:4002/email_login",
{
email : $scope.login.email,
password : $scope.login.password
},
function(data,status){
data = JSON.parse(data);
console.log(data);
if(data.log==1)
{
//window.location.href = "dashboard";
$location.path('dashboard');
}
else
{
alert("wrong username and password");
}
});
};
$scope.logout = function () {
Data.get('logout').then(function (results) {
Data.toast(results);
$location.path('login');
});
}
app.filter('startFrom', function() {
return function(input, start) {
if(input) {
start = +start; //parse to int
return input.slice(start);
}
return [];
}
});
});
Bitte überprüfen Sie den code und mir sagen, wo ich bin, einen Fehler zu machen.
- Warum sind Sie auf der Verpackung Ihrer app.js code in einer anonymen Funktion?
- Ich lese die natürlich von Dan wahlin....Sie haben das so gemacht, damit ich Folgen, Ihre Methode
- Das ist nicht erforderlich. Das zu tun ist, einschränken Gültigkeitsbereich von Variablen
app
nur auf diese Funktion und Sie versuchen, zu verwenden, die in einer anderen Datei. Entfernen Sie einfach, dass die anonyme Funktion ausgeführt wird. - danke, problem wurde gelöst, zeigt aber einen anderen Fehler: [$Injektor:unpr] Unbekannt-Anbieter: Datenprovider <- Daten
- Ich habe da in meiner Antwort unten, entfernen Sie bitte
Data
Abhängigkeit von Ihrem controller Abhängigkeit Injektionen. Es gibt noch mehr Dinge, die fix im code. Schauen Sie sich deshalb meine Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist eine gute Lektion in Bezug auf den Anwendungsbereich. Wrapping Dinge in anonymen Funktionen (
function(){...}());
) wird deklarierten Variablen innerhalb dieser Funktion unsichtbar für Dinge, die außerhalb der Funktion. Ich werde nicht gehen über alle javascript-Bereich Sachen, die in dieser Antwort, weil es gut dokumentiert auf viele andere Fragen aber im wesentlichen ist es dein problem;In kurzen entfernen der anonymen Funktion, die in Ihrer
app.js
oder erklären dieapp
variable außerhalb der Funktion.Sieht es aus wie alle anderen Antworten sind von Leuten ohne Kenntnisse in Angular JS, und nur von Javascript. Sie alle geben die gleiche falsche Antwort, die möglicherweise den code, um zu arbeiten, sondern stellen eine schlechte Praxis ist.
Wickeln Sie Ihren code in eine anonyme Funktion ist in Ordnung!
Dies ist nicht das problem. Das problem ist, dass Sie Ihre controller in einer separaten Datei, aber vergessen hat, es in ein separates Modul als gut.
loginController.js
app.js
Diese Antwort ist gesichert durch das angular-seed-Projekt auch nach der offiziellen Winkel-docs: https://github.com/angular/angular-seed
Uncaught ReferenceError
weilapp
variable out of scope.Hatte den gleichen Fehler. In meinem Fall war es die Reihenfolge der javascript-Dateien.
Ich musste sicherstellen, dass app.js erklärt wurde, bevor die service.js Datei (die Datei, die hatte eine Referenz-app in es).
Außerdem, diese Fehlermeldung ("app ist nicht definiert") könnte durch ein syntax-Fehler im javascript-code, so überprüfen Sie Ihre javascript-code für syntax-Fehler, wenn es eine "Uncaught SyntaxError" gepaart mit es.
Ihre Anwendung definiert ist, im inneren anonyme Funktion , also die app hat den Bereich innerhalb der it. versuchen Sie, erstellen eine Globale app-variable.
Entfernen Sie die anonyme Funktion aus app.js wie:
Und auch bewegen Sie Ihre
startFrom
filter Registrierungs-code aus dem controller-block. Eine Letzte Sache, dass der controller die Annahme eines dependency injection im letzten:Data
die nicht definiert ist, so entfernen Sie auch.Hoffe, das hilft!