UI路由器条件ui视图?

Rya*_*lly 38 angularjs angular-ui angular-ui-router

我无法找到一种合理的方法来解决这个相当微不足道的问题.

我希望访客在访问网站索引时看到启动页面,并且登录用户查看他们的个人资料,每个页面都有自己的模板和控制器.理想情况下,一个url会有两种状态,不知怎的,我可以根据loggin状态自动更改活动状态.这两个视图都有自己的嵌套视图,因此无法使用ng-include(我假设).

我对angular和ui路由器都很陌生,并认为我可能会忽略这个问题的简单解决方案.

可以用命名视图和ng-show完成吗?

Nat*_*ele 53

如果您正在使用UI路由器,只需创建三种状态:根状态,'/'URL和两个没有URL的直接后代状态.在onEnter根状态中,您将检测用户的状态并相应地转换为正确的子状态.这给出了两个子状态保持相同URL的外观,但允许您必须使用单独的配置分离状态.

  • 您可能必须检查`$ state.current`的值以验证您没有做任何循环,因为`onEnter`将始终触发您的根状态,即使进入子状态也是如此. (4认同)
  • 一个例子怎么样?这个答案没用,每个人都可以谷歌和阅读文档. (2认同)

Ama*_*jan 8

templateUrl可以是一个功能,所以你可以检查登录状态,返回不同的观点和看法,而不是作为国家配置的一部分定义控制器


Nit*_*hav 5

我的解决方案

angular.module('myApp')
.config(function ($stateProvider) {
    $stateProvider
        .state('main', {
            url: '/',
            controller: function (Auth, $state) {
                if (someCondition) {
                    $state.go('state1');
                } else {
                    $state.go('state2');
                }
            }
        });
});
Run Code Online (Sandbox Code Playgroud)

其他地方定义了州1和州2.