0

我正在使用 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属于用户、组织或事件。响应包含该实体的信息和类型(用户、组织、事件)。

从那里,它只是根据匹配的实体进行重定向。

4

0 回答 0