我正在使用 MEAN,我正在尝试使用诸如 www.domain.com/#!/:path 之类的条件 URL 将用户重定向到不同的页面(以及不同的控制器)
我会更好地解释自己。
我有三个不同的包(用户、组织和事件),但所有包都可以通过相同的参数化 URL (www.domain.com/#!/:path) 访问。路径是存储在数据库中的字段,属于每个包的每条记录都有自己的路径。当然,路径是独一无二的。
我想要做的是检测用户正在访问的 URL 是否属于用户、组织或事件,以加载正确的页面。为此,我必须查询数据库以检查 :path 是否存储在用户、组织或事件模型中。根据该查询的结果,只需重定向到正确的控制器/页面。
我不知道如何在 AngularJS 方面完全做到这一点。有什么建议吗?
提前致谢!
解决方案:
最后,我让它工作做这样的事情:
// 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
属于用户、组织或事件。响应包含该实体的信息和类型(用户、组织、事件)。
从那里,它只是根据匹配的实体进行重定向。