首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular路由不能正常工作

Angular路由不能正常工作
EN

Stack Overflow用户
提问于 2016-06-22 23:36:42
回答 1查看 96关注 0票数 0

我正在建立一个登录页面,其中用户有2个角色,即学生或图书管理员。当用户输入其凭据并单击submit时,将调用验证函数。

现在,

我面对的问题是:

路由不起作用,即控件到达警报(“登录成功”),进入if ($scope.rolesi.role ===“$location.path”){但不将页面指向学生(‘/$scope.rolesi.role/$location.path’);

登录页面url如下:

http://localhost:63342/LabguideExamples/Assignment/Day4/Login.html?_ijt=oa5emr702cenehrs4oosarmg0d

登录成功后的url如下所示。

http://localhost:63342/LabguideExamples/Assignment/Day4/Login.html?_ijt=oa5emr702cenehrs4oosarmg0d#/home/student

根据app.js,url仍然具有Login.html,并且不会被“ViewBooks_Student.html”替换。

任何帮助都是非常感谢的。

谢谢

controller.js

代码语言:javascript
运行
复制
var Controllers = angular.module('Controllers', ['ngRoute']);
Controllers.controller('LoginCtrl', ['$scope','$http','$location',
function ($scope,$http,$location) {
    $scope.validate=function()
    {
        $http.get('data/roles.json').success(function(data) {
            $scope.roles = data;

        var count=0;
            for (var i = 0, len = $scope.roles.length; i < len; i++) {
if ($scope.username === $scope.roles[i].username && $scope.password === $scope.roles[i].password) {
                    alert("login successful");
                    count = count + 1;
                    if ($scope.roles[i].role === "student") {
                        $location.path('/home/student');
                        break;
                    }
                    else {
                        $location.path('/home/librarian');
                        break;
                    }

                }
            }

        if(count!=1)
        {
            alert("Please provide valid login credentials");
            $location.path( "/main" )
        }
        });
    }

}]);

app.js

代码语言:javascript
运行
复制
var bookApp = angular.module('bookApp',[
'Controllers','ngRoute'
]);
bookApp.config(['$routeProvider',
function($routeProvider) {
    $routeProvider.
    when('/main', {
        templateUrl: 'Login',
        controller: 'LoginCtrl'
    }).
    when('/home/student', {
        templateUrl: 'ViewBooks_Student.html',
        controller: 'BookListCtrl_Student'
    }).
    when('/home/librarian', {
        templateUrl: 'ViewBooks_Librarian.html',
        controller: 'BookListCtrl_Librarian'
    }).
    when('/issue/:bookId', {
        templateUrl: 'IssueBook.html',
        controller: 'IssueBookCtrl'
    }).
    when('/return/:bookId', {
        templateUrl: 'ReturnBook.html',
        controller: 'ReturnBookCtrl'
    }).
    otherwise({
        redirectTo: '/main'
    });
}]);
EN

回答 1

Stack Overflow用户

发布于 2017-04-25 13:07:34

这是一种深度问题。据我所知,登录后,您需要重定向到基于用户角色的页面。你在控制器上写的这个特殊的逻辑,你需要写到Angular Run块中

代码语言:javascript
运行
复制
angular.module('myapp').run([],function(){})

基本上,Angular有一个优先执行的系统,运行块,在控制器之前执行。有关更多详细信息,请查看Angular文档。https://docs.angularjs.org/guide/module

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37972598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档