我使用MEAN并尝试使用条件网址将用户重定向到不同的网页(不同的控制器),例如www.domain.com /#!/:path
我会更好地解释自己。
我有三个不同的软件包(用户,组织和活动),但所有软件包都可以通过相同的参数化URL访问(www.domain.com/#!/:path)。 Path是存储在数据库中的字段,属于每个包的每个记录都有自己的路径。当然,路径是独一无二的。
我想要做的是检测用户访问的URL是否属于用户,组织或事件,以加载正确的页面。为此,我必须查询数据库以检查:路径是否存储在用户,组织或事件模型中。根据该查询的结果,只需重定向到适当的控制器/页面。
我不知道如何在AngularJS方面完全实现。有什么建议吗?
提前致谢!
SOLUTION:
最后,我让它正在做这样的事情:
// states for my app
$stateProvider
.state('home', {
url: '/',
templateUrl: 'system/views/index.html'
})
.state('entity', {
url: '/:path',
template: 'Loading...',
controller: function ($scope, Global, $http, $state, $stateParams) {
$http({
method: 'GET',
url: '/checkUrl/' + $stateParams.path
})
.then(function (result) {
$scope.global = Global;
// Doing entity information accesible globally
$scope.global.entity = result.data.info;
// Redirecting to the proper controller/template
switch ( result.data.type ) {
case 'users':
$state.go('user', {reload: true});
break;
case 'organizations':
$state.go('organization', {reload: true});
break;
default:
};
});
}
})
.state('user', {
url: '',
templateUrl: 'users/views/index.html'
})
.state('organization', {
url: '',
templateUrl: 'organizations/views/index.html'
});
通过/checkUrl/:path
向服务器端发出请求,以检查:path
是否属于用户,组织或事件。响应包含该实体的信息和类型(用户,组织,事件)。
从那里开始,它只是根据匹配的实体重定向。