角UI路由器完成条件视图

戴维

我问一个与此问题类似的问题:UI路由器有条件的ui视图?,但我的情况要复杂一些,似乎无法获得提供的答案。

基本上,我有一个可以用两种非常不同的方式呈现的url,具体取决于该url指向的实体的类型。

这是我目前正在尝试的

    $stateProvider
        .state('home', {
            url : '/{id}',
            resolve: {
                entity: function($stateParams, RestService) {
                    return RestService.getEntity($stateParams.id);
                }
            },
            template: 'Home Template <ui-view></ui-view>',
            onEnter: function($state, entity) {
                if (entity.Type == 'first') {
                    $state.transitionTo('home.first');
                } else {
                    $state.transitionTo('home.second');
                }
            }
        })
        .state('home.first', {
            url: '',
            templateUrl: 'first.html',
            controller: 'FirstController'
        })
        .state('home.second', {
            url: '',
            templateUrl: 'second.html',
            controller: 'SecondController'
        });

我设置了一个Resolve来从一个宁静的服务中获取实际的实体。直到我实际上根据类型进入transitionTo为止,所有事情似乎都在起作用。

转换似乎可以正常工作,但解析会重新触发并且getEntity会失败,因为id为null。

我尝试将id发送给transitionTo调用,但是随后它仍然尝试进行第二次解析,这意味着该实体从其余服务中提取了两次。

似乎正在发生的事情是,在onEnter处理程序中,状态实际上尚未更改,因此,当发生过渡时,它认为它正在过渡到一个全新的状态,而不是子状态。这进一步得到证明,因为当我删除实体时。从transitionTo中的状态名称中,它认为当前状态是root,而不是home。这也阻止了我使用“ go”而不是transitionTo。

有任何想法吗?

阿曼(Aman Mahajan)

所述templateUrl可以是函数,以及因此你检查的类型和返回不同的视图,在该视图,而不是作为状态配置的一部分限定的控制器。您无法将参数注入templateUrl,因此可能必须使用templateProvider。

$stateProvider.state('home', {
  templateProvider: ['$stateParams', 'restService' , function ($stateParams, restService) {
    restService.getEntity($stateParams.id).then(function(entity) {
        if (entity.Type == 'first') {
              return '<div ng-include="first.html"></div>;
        } else {
              return '<div ng-include="second.html"></div>';
        }
    });
  }]
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

条件角度ui路由器视图

来自分类Dev

ui路由器嵌套视图条件

来自分类Dev

条件角度ui路由器视图

来自分类Dev

角ui路由器嵌套视图无法显示?

来自分类Dev

UI路由器有条件的ui视图?

来自分类Dev

角嵌套路由器-ui

来自分类Dev

角UI路由器解决继承

来自分类Dev

角ui路由器嵌套视图将模板和控制器分开

来自分类Dev

具有子状态的角UI路由器并行视图

来自分类Dev

角UI路由器在相同状态的子视图之间传递数据

来自分类Dev

UI路由器子视图

来自分类Dev

Angular UI路由器嵌套视图

来自分类Dev

递归ui路由器嵌套视图

来自分类Dev

角度ui路由器嵌套视图

来自分类Dev

递归ui路由器嵌套视图

来自分类Dev

流星角UI路由器路由逻辑

来自分类Dev

路由器动画完成之前,角嵌套的路由器出口子项消失了

来自分类Dev

角ui路由器崩溃的浏览器

来自分类Dev

角度ui路由器:父视图和子视图

来自分类Dev

角ui路由器抽象状态$ scope未删除

来自分类Dev

角UI路由器| $ stateParams不起作用

来自分类Dev

角UI路由器不起作用

来自分类Dev

角UI路由器抛出500错误

来自分类Dev

角UI路由器状态未加载

来自分类Dev

角UI路由器不显示模板

来自分类Dev

角UI路由器-热量等效吗?

来自分类Dev

角UI路由器解析不起作用

来自分类Dev

角UI路由器不加载任何东西

来自分类Dev

基于角色的有角UI路由器隐藏