I'm a beginner with Angularjs, and I have some difficulties understanding modules and scopes.
I keep getting the error that the scope is undefined, but I don't get why. First I had my controller linked where I set my route, but since the function inside the controller is called on submit button click I took it away. I've tried putting it back, but that didn't make any difference.
This is my js file:
var myApp = angular.module('myApp', ['ngRoute']);
// routes
myApp.config(function($routeProvider) {
$routeProvider
// route for the home page
.when('/', {
templateUrl : 'home.html',
controller : 'mainController'
})
// route for the about page
.when('/about', {
templateUrl : 'about.html',
controller : 'aboutController'
})
// route for the login page
.when('/login', {
templateUrl : 'login.html'
});
});
myApp.controller('mainController', function($scope) {
$scope.message = 'Beginpagina';
});
myApp.controller('aboutController', function($scope) {
$scope.message = 'Informatie over deze pagina';
});
function loginCtrl($scope, $http){
$scope.doLogin = function() {
$http({
method: 'POST',
url: 'loginController.php',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: {
'username': $scope.un,
'password': $scope.pw
},
}).
success(function(data, status) {
$scope.data = data;
if(data == 'FALSE'){
$scope.errorMessage = 'Geen geldige inloggegevens';
} else {
scope.$apply(function() { $location.path("/profile"); });
}
}).
error(function(data, status) {
$scope.data = data || "FALSE";
$scope.errorMessage = 'Something went wrong';
});
};
};
And this is my login-page where I get the error, trying to log in:
<div class="span5" ng-controller="loginCtrl">
<form>
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="Gebruikersnaam" ng-model="un"
type="text" autocomplete="off">
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" ng-model="pw"
type="password" value="" autocomplete="off">
</div>
<input class="btn btn-lg btn-success btn-block" type="submit"
ng-click="doLogin()" value="Login">
<div>{{errorMessage}}</div>
</fieldset>
</form>
</div>
I don't know if I should post the index-page as well, since the routing for home/about page works fine, so the problem is somewhere making the logincontroller and linking it to my submit button. I have found some similar questions, but I haven't seen anyone mix a new controller with myApp controllers, so I might be doing it completely wrong. I've also read that one html page can only have one module, so I didn't know if I could put the login controller apart. It would be nice to have some more info to be put in the right direction. Thanks in advance!
In loginCtrl, you have used scope
instead of $scope
Problem is in line
scope.$apply(function()
Use
$scope.$apply(function()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With