Angular Route:根据rootScope条件定义templateUrl

时间:2016-07-17 12:50:43

标签: angularjs dynamic angular-ui-router conditional-statements rootscope

我正在尝试动态更改路线中的templateUrl。问题是在我的函数中,$rootScope及其参数不可用。

有人有想法解决这个问题吗?

angular.module('name').config(function ($routeProvider) {
  $stateProvider.state('tickets', {
    url: "/tickets",
    templateUrl: checkPartnerType,
    controller: 'TicketListController'
  })
 });

function checkPartnerType($rootScope){ 

    if( $rootScope.user.partner.type == 'NAT'){   
        return "core/partials/b2c-ticket-list.html"; 
    }else{
        return "core/partials/b2b-ticket-list.html"; 
    }
}

1 个答案:

答案 0 :(得分:0)

如此处所述

this

设置 templateUrl

  

html模板作为字符串或返回html模板的函数   作为uiView指令应该使用的字符串。这个   property优先于templateUrl。

     

如果template是一个函数,将使用以下函数调用它   参数:

     
      从当前$ location.path()中提取的
  • {array.<object>} - 状态参数   通过应用当前状态
  •   

所以,唯一的参数可能是状态参数。但我们还有另一种选择 - templateProvider

  

返回HTML内容字符串的提供程序函数。

templateProvider:
  function(MyTemplateService, params) {
    return MyTemplateService.getTemplate(params.pageId);
  }

使用 templateProvider ,我们可以使用所有IoC电源,并要求注入任何服务。检查这些: