我是AngularJS的新手,我对如何在以下场景中使用angularjs ui-router
感到困惑:
它由两部分组成。第一部分是主页,其中包含登录和注册视图,第二部分是仪表板(成功登录后)。
我当前的路由器在下面。我该怎么做这个功能? (请帮助一些HTML代码和相关的控制器)
'use strict';
//Define Routing for app
angular.module('myApp', []).config(['$routeProvider', '$locationProvider',
function($routeProvider,$locationProvider) {
$routeProvider
.when('/login', {
templateUrl: 'login.html',
controller: 'LoginController'
})
.when('/register', {
templateUrl: 'register.html',
controller: 'RegisterController'
})
.when('/forgotPassword', {
templateUrl: 'forgotpassword.html',
controller: 'forgotController'
})
.when('/home', {
templateUrl: 'views/dashBoard.html',
controller: 'dashBordController'
})
.otherwise({
redirectTo: '/login'
});
}]);
});
答案 0 :(得分:1)
首先,没有人会为您设计一个符合您要求/功能的网站。 stackoverflow
针对具体问题,您的问题过于宽泛,更多关于它 - How to Ask。但是为了帮助您进行从ngRoute
到ui.router
的转换,我可以描述语法的外观,以便您可以将其用于您的网站。
<小时/>
ui.router
您的配置不会发生太大变化。您需要将.when
替换为.state
,使用正确的提供程序,并使用正确的语法。这是一个只有少数几个州的例子:
app.config(config);
/* your preferred way of injecting */
config.$inject = ['$stateProvider', '$urlRouterProvider'];
function config($stateProvider, $urlRouterProvider) {
$stateProvider.
state("HomepageState", {
url: "/home",
templateUrl: 'views/dashBoard.html',
controller: 'dashBordController'
}).
state("RegisterState", {
url: "/register",
templateUrl: 'register.html',
controller: 'RegisterController'
})
/*
more can be added here...
*/
$urlRouterProvider.otherwise('/login');
}
&#13;
<小时/>
您应该始终使用状态进行导航。因此,将href="url"
替换为ui-sref="state"
。以下是锚链接的一些示例:
<a ui-sref="HomepageState">Home page</a>
<a ui-sref="RegisterState">Register</a>
请勿忘记将ng-view
替换为ui-view
。 (对于较旧的浏览器支持,最好使用<div ui-view></div>
代替<ui-view></ui-view>
)
<小时/>
填写登录表单后,用户将按下以下内容:
<button ng-click="login()">Sign in</button>
将调用函数login()
,该函数将验证/验证用户是否可以登录。(您还可以<form ng-submit="login()">
使用<button type="submit">...
)然后,如果一切正常,用户获得了会话/ cookie,您可以通过以下方式重定向到另一个页面:
$state.go("HomepageState");
(别忘了将$state
注入你的控制器)
<小时/>
将来如果您拥有按索引列出的用户个人资料。您可以使用$stateParams
改进路由。他们的工作是检查URL中的任何其他参数。例如:网址:/profile/721
可以包含url:"/profile/:id"
的州。然后,您可以使用$stateParams.id
提取该ID,并在控制器中使用它。你的重定向看起来像:
$state.go("ProfileState", { "id": 721});