无法在ng-repeat

时间:2016-06-13 15:52:14

标签: javascript angularjs angular-translate

我很难在Angular中翻译属性。

我正在重复一个阵列,其中每个项目都有一天的“一天”'属性。

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

在翻译部分,我有一个&#39;天&#39;属性有7个子属性,一个星期的每一天。

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

因此,我试图在“#days”期间访问正确的翻译。属性为&f; day&#39;价值,但我找不到合适的语法。

我很乐意为此提供一些帮助。

感谢。

2 个答案:

答案 0 :(得分:0)

我唯一看错的是您在提供商中设置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是一个整数)

答案 1 :(得分:0)

感谢你的回答克里斯,我得到了正确的日子......但问题是当我把它放在支架与翻译过滤器之间时。像这样:

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

在我看来,它显示:天[f.day] 而非翻译。