我想问一下,如果我同样一个路由,用户登录和没登陆是完全两个页面。比如/这个路由。 用户登录了是homepage.html,没登陆是landingpage.html。 这两个page的css,js都很不一样。 但是我想让用户看到的都在这个地址:/ 那这样的话,angularJS怎么去弄啊。$routeProvider好像没有办法做到conditional的templateUrl
一种方法是:在一个模版中写好两个页面。然后用 ng-show=logined 的状态来显示
@Airead 那css的处理呢?
@kilik52 css 跟据不同的 class 或 tag 写就行了
在 routeProvider 前就做好处理不可以? 比如
var templateUrl = "";
if (req.user){
templateUrl = "homepage.html";
} else {
templateUrl = "landingpage.html";
}
@russj 哪来的req.user?
app.config(['$routeProvider', '$locationProvider', '$httpProvider',
function($routeProvider, $locationProvider, $httpProvider) {
$routeProvider.
when('/', {
templateUrl: '/app/views/landing-page.html,
css: ['stylesheets/landing-main.css','stylesheets/animate.css']
}).otherwise({redirectTo: '/'});
}]);
sorry,req.user 是一般存在 服务器端的 request 里的, 你要得是在前端 可以看这个 http://stackoverflow.com/questions/20969835/angularjs-login-and-authentication-in-each-route-and-controller
你得从服务端来得到用户登录的状态 所以你的问题就变成了两个问题:
- 如何通过 angular 检查用户登录情况
- 如何做 conditional 的 templateUrl 在 angular 的router里 如果是用后端的router,你的问题就要简单些。
我用的 AngularJS 的 ui.router,可以在templateUrl 的 function 里做 condition 比较
$stateProvider
.state('articles', {
url: '/:author',
templateUrl: function ($stateParams){
return $stateParams.author + 'List.html';
},
controller: 'ArticleCtrl'
})
@russj 非常感谢!我去研究一下