无法访问 ng-repeat中变量属性名称的翻译



我很难用 Angular 翻译属性。

我正在对一个数组进行 ng 重复,其中每个项目都有一个"day"属性。

<h2 ng-repeat="f in forecast">{{ "days[f.day]" | translate }} {{ f.date | date:'dd' }}</h2>

在翻译部分,我有一个"天"属性,它有 7 个子属性,一周中的每一天一个。

$translateProvider.translations('en', {
  ...
  days: {
    sunday:'Sunday',
    monday:'Monday',
    tuesday:'Tuesday',
    wednesday:'Wednesday',
    thursday:'Thursday',
    friday:'Friday',
    saturday:'Saturday'
  }
});

所以我试图使用"f.day"值访问"days"属性中的正确翻译,但我找不到正确的语法。

我很乐意在这方面得到一些帮助。

谢谢。

我认为您提供的内容的唯一错误是您如何在提供程序中设置days

你拥有的基本上是一个关联数组:

days: {
    sunday:'Sunday',
    monday:'Monday',
    tuesday:'Tuesday',
    wednesday:'Wednesday',
    thursday:'Thursday',
    friday:'Friday',
    saturday:'Saturday'
}

使用当前的结构,您无法执行days[f.day]之类的操作,除非您确定f.day将匹配您的一个键。一个例子是类似days.friday

因此,要检查的第一件事是登录f.day以查看它实际上是什么。

以下建议基于f.day是整数的假设。为了使days[f.day]工作,您希望天数是这样的数组:

days = [
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday"
]

你也可以做一个像这样的对象数组:

days = [
    {"name":"Sunday"},
    {"name":"Monday"},
    {"name":"Tuesday"},
    {"name":"Wednesday"},
    {"name":"Thursday"},
    {"name":"Friday"},
    {"name":"Saturday"},
]

但是你必须做days[f.day].name(再次假设f.day是一个整数)

感谢您的回复,克里斯,我的日子过得对了...但问题是当我用翻译过滤器将其放在括号之间时。喜欢这个:

{{ "days[f.day]" | translate }}

在我的视图中,它显示:天[f.day]而不是翻译。

最新更新