javascript - 路由时在配置中的 templateUrl 上应用条件

标签 javascript angularjs angular-ui-router user-experience angular-translate

我正在使用 ui-router 并使用 Angular-translate 开发了一个多语言网站 但目前我陷入了我想要的场景:

  1. 单个页面将有 2 个模板,其中一个是普通版本,为英文,可作为普通网站使用,第二个模板将由 translate="" 属性组成,换句话说完全翻译的页面。但如果我在路由时可以有条件,我愿意,这样就能解决我的问题。 查看代码可以让您更容易理解。

目前我的代码如下所示:

.state('whoweAre', {
            url: '/about-us',
            templateUrl: 'templates/whoweAre/whoweAre.html', 
            controller: 'whoweAreCtrl'
        }
    )

但现在我想要类似的东西

    .state('whoweAre', {
            url: '/about-us',
            templateUrl: function(isTranslated){
             if(isTranslated){
              return "templates/translated/whoweAre/whoweAre.html";
             }
             else{
               return "templates/whoweAre/whoweAre.html";
             }
            }, 
            controller: 'whoweAreCtrl'
        }
    )

但这似乎不起作用,我在 app.js 中有这个 isTranslated 变量,但我无法在配置(routes.js)文件中访问它。 任何与此相关的工作都会很棒。 我使用这个是因为当用户第一次到达时, Angular 翻译文本似乎是空的,并且标 checkout 现空标签,这会导致糟糕的用户体验。 任何帮助,将不胜感激。 谢谢!

最佳答案

您可以在app.js中查找当前状态并动态设置模板

在您的app.js中检查状态

 $rootScope.$on('$stateChangeStart', function(event, next) {

                if(next.name=="whoweAre" && isTranslated)
                {
                  next.templateUrl="templates/translated/whoweAre/whoweAre.html";
                }
                else if(next.name=="whoweAre" && !isTranslated)
               {
                  next.templateUrl="templates/whoweAre/whoweAre.html";
               }

关于javascript - 路由时在配置中的 templateUrl 上应用条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45302477/

相关文章:

javascript - 用户界面路由器 : Best way to initialize variables when state is accesed

javascript - JavaScript 日期中 '01' 和 '1' 之间的差异

javascript - 将 RSS 数据加载到全局变量中

javascript - 是否可以模糊或淡出 SVG 路径?

angularjs - Angular ui-sref编码参数

html - 如何将查询字符串附加到 Angular ui-router 中的 URL

javascript - TypeError : this. props.dispatch 不是一个函数

javascript - Angular 1.6 ES6 $ watch

javascript - 插入数组控制台日志可以看到但不会在 html 中呈现,为什么? Angular JS

javascript - 使旧链接在 Express 中向后兼容