使用相同的条件URL加载不同的控制器

时间:2014-11-03 17:09:43

标签: javascript angularjs mean-stack mean.io

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

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

0 个答案:

没有答案