如何使用Angular translate和ng-repeat

时间:2016-04-19 11:35:16

标签: angularjs

我的Json文件中有一个句子列表,我想要:

  1. 使用Angular翻译翻译;
  2. 使用ng-repeat。
  3. 示例:

    JSON:

    
    
    {
      "MAIN": {
        "THEMES": {
          "THEME_1": "BLABLABLA",
          "THEME_2": "BLABLABLA"
        }
      }
    }
    
    
    

    HTML:

    
    
    <ul>
     <li ng-repeat="item in ???">{{ }} </li>
    &#13;
    &#13;
    &#13;

    我应该通过Controller做到这一点吗?

    更好的方法是什么?

4 个答案:

答案 0 :(得分:1)

对于您提供的JSON,您可以将其保存在简言之$scope.data变量中,并将其用作

<ul>
 <li ng-repeat="(key, value) in data.MAIN.THEMES">{{ value | translate }} </li>
</ul>

希望它有所帮助。

答案 1 :(得分:1)

我不知道你的代码整体,但我有一个类似的ng-repeat问题,我有一个解决方案。试试这个:

<li ng-repeat="item in ???">{{ 'MAIN.THEMES.THEME_' + $index | translate}} </li>

其中$ index是ng-repeat的索引。

答案 2 :(得分:0)

<ul>
<li ng-repeat="(key,val) in MAIN.THEMES">{{val}} </li>

答案 3 :(得分:0)

您应该bit more searching

我认为您要做的是对您的json文件进行http调用,将其存储在名为MAIN.THEMES的范围变量中,然后您可以通过ng-repeat访问它。

app.controller('main', function($scope, $http) {
    $http.json('./local.file.json').success(function(themes) {
        $scope.MAIN = {};
        $scope.MAIN.THEMES = {};
        $scope.MAIN.THEMES = themes;
    })
})

之后,您可以将结果传输到像这样的过滤器中。

<ul ng-controller="main">
    <li ng-repeat="theme in MAIN.THEMES track by $index">
        Data: {{ theme | translate }} Repeat Index: {{ $index }}
    </li>
    (or @Devidas' answer)
    <li ng-repeat="(key,val) in MAIN.THEMES">
        {{ val | write_own_translation_filter }}
    </li>
</ul>

更新 Added Example