Angularjs-一条路线两种可能的视图
我希望能够为两个不同的视图使用一条路线 比如现在,我有两条路线 一个是/home,它是用户可以注册/登录的主页 另一个是/feed,这是用户登录时 我想做的是有一条单一的路线,比如twitter: twitter.com/ 首先,他们要求你登录 twitter.com/ 我们可以看到我们的饲料墙。而且还是一样的“/”。希望我清楚:) 这是我目前的代码:Angularjs-一条路线两种可能的视图,angularjs,controller,routes,views,Angularjs,Controller,Routes,Views,我希望能够为两个不同的视图使用一条路线 比如现在,我有两条路线 一个是/home,它是用户可以注册/登录的主页 另一个是/feed,这是用户登录时 我想做的是有一条单一的路线,比如twitter: twitter.com/ 首先,他们要求你登录 twitter.com/ 我们可以看到我们的饲料墙。而且还是一样的“/”。希望我清楚:) 这是我目前的代码: $stateProvider .state('index', { url: '/',
$stateProvider
.state('index', {
url: '/',
controller: function($state, $auth) {
$auth.validateUser()
.then(function(resp) {
$state.go('feed');
})
.catch(function(resp) {
$state.go('home');
});
}
})
.state('home', {
url: '/home',
templateUrl: 'home.html'
})
.state('feed', {
url: '/feed',
templateUrl: 'feed.html'
})
据我所知,ui路由器不支持这样的功能,所以你必须自己做 您可以做的是像在“index”中那样只定义一个状态,而不是在控制器中执行$auth逻辑,而是在“resolve”部分中执行 然后,您可以使用“ng if”和“ng include”定义要加载的.html文件和控制器,如下所示: app.js
$stateProvider
.state('index', {
url: '/',
resolve: {
isAuthenticated: function() {
return $auth.validateUser().then(function(res) {
return true;
}, function(error) {
return false;
});
}
},
controller: function($scope, isAuthenticated) {
$scope.isAuthenticated = isAuthenticated;
},
templateUrl: 'index.html'
})
index.html
<div ng-if="isAuthenticated">
<div ng-include="'feed.html'"></div>
</div>
<div ng-if="!isAuthenticated">
<div ng-include="'login.html'"></div>
</div>