gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:47:44 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com