Эй, ребята, я застрял с этим в течение последнего часа. Таким образом, в основном, когда вы вводите admin в качестве имени пользователя и администратора в качестве пароля на этом веб-сайте, он доходит до хэша dashboard.html и показывает ошибку в консоли, а dosent - в dashboard.html...
Но он работает на plunkr... Я сошел с ума?
Вот код:
Index.html:
<!DOCTYPE html>
<html lang= "en">
<head>
<meta charset="UTF-8" />
<title>Basic Login Form</title>
<script data-require="[email protected]" src="https://code.angularjs.org/1.4.8/angular.js" data-semver="1.4.8"></script>
<script src = "https://rawgit.com/nirus/Angular-Route-Injector/master/dist/routeInjector.js"></script>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular-route.js"></script>
<script type="text/javascript" src="main.js"></script>
</head>
<body ng-app = "app">
<div ng-view>
</div>
</body>
</html>
dashboard.html:
Welcome User!
main.js:
var app = angular.module('app', ['ngRoute'])
app.config(function($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'Login.html'
})
.when('/dashboard', {
resolve: {
"check": function($location, $rootScope) {
if(!$rootScope.logedIn){
location.path('/')
}
else{
templateUrl: 'dashboard.html'
}
}
},
templateUrl: "dashboard.html"
})
.otherwise({
redirectTo: '/'
})
})
app.controller('loginCtrl', function($scope, $location, $rootScope) {
$scope.submit = function() {
if ($scope.username == 'admin' && $scope.password == 'admin') {
$rootScope.logedIn = true;
$location.path('/dashboard')
}
}
})
login.html:
<div ng-controller = "loginCtrl">
<form action = "/" id = "myLogin">
UserName : <input type = "text" name = "username" id = "username" ng-model = "username"><br>
Password : <input type = "text" name = "password" id = "password" ng-model = "password"><br>
<button type="button" ng-click = "submit()">Submit</button>
</form>
</div>
Я просто проверил ваш сайт, который вы неправильно поставили контроллер,
+ Изменить
Из:
ng-controller="loginCtrl>"
Для того, чтобы:
ng-controller="loginCtrl">
app.config(function($routeProvider) {
$ routeProvider.when('/', {templateUrl: 'Login.html'
}) })
В вашем коде при загрузке частичного html вы забыли включить контроллер, так что должно быть так
$routeProvider.when('/', {
templateUrl: 'Login.html',
controller:'loginCtrl'
})
Ваш последний код выглядит так:
var app = angular.module('app', ['ngRoute'])
app.config(function($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'Login.html',
controller: 'loginCtrl'
})
.when('/dashboard', {
resolve: {
"check": function($location, $rootScope) {
if(!$rootScope.logedIn){
location.path('/')
}
else{
templateUrl: 'dashboard.html'
}
}
},
templateUrl: "dashboard.html"
})
.otherwise({
redirectTo: '/'
})
})
app.controller('loginCtrl', function($scope, $location, $rootScope) {
$scope.submit = function() {
if ($scope.username == 'admin' && $scope.password == 'admin') {
$rootScope.logedIn = true;
$location.path('/dashboard')
}
}
})
если вы проверите код... вы увидите ниже
ng-controller="loginCtrl>"
удалите символ >
в конце