【问题标题】:Angular Route: Define templateUrl based on rootScope conditionAngular Route:根据 rootScope 条件定义 templateUrl
【发布时间】:2016-07-17 23:50:04
【问题描述】:

我正在尝试动态更改路线中的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"; 
    }
}

【问题讨论】:

  • 您可以尝试将 $rootScope 注入到 routeprovider 旁边的配置函数中,但不确定这是否有效。老实说,这是应该使用状态解析和/或 url 参数来解决的问题

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


【解决方案1】:

这里记录

$stateProvider

设置templateUrl

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

如果模板是一个函数,它会被如下调用 参数:

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

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

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

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

通过templateProvider,我们可以使用所有的 IoC 力量,并要求注入任何服务。检查这些:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2019-09-05
    • 2016-12-09
    • 1970-01-01
    相关资源
    最近更新 更多