如何在重复完成后更改ng-repeat内的值?

时间:2016-06-06 19:34:42

标签: angularjs angularjs-ng-repeat

我有一个JSON,它为我提供了用户的工作经验信息。但是国家和城市以代码格式提供(TR,DE等) 我正在使用ng-repeat将它们传递给像这样的HTML

<div ng-repeat="e in experiences">
   <span>{{e.Name}}</span>
   <span ng-init="changeCodeToFullName(e.Country)">{{vm.CountryFullName[$index]}}</span>
</div>

我使用ng-init将国家/地区代码转换为全名。 changeCodeToFullName是我写的一个角度服务,这是一个正确的方法吗?如果是,我无法访问dom来更改CountryFullName值。我试图在像vm.CountryFullName[0]="TEST"这样的JS文件中访问它们,但它没有用。我之后需要使用e.Country变量,因此我无法更改原始的.e.Country值。

如何在ng-repeat完成后访问ng-repeat内的变量?

2 个答案:

答案 0 :(得分:1)

如何使用自定义filter

<div ng-repeat="e in experiences">
    <span>{{e.Name}}</span>
    <span>{{e.Country | changeCodeToFullName}}</span>
</div>

angular.module('App').filter('changeCodeToFullName', function(YourService) {
    return function(country) {
        return YourService.getFullCountryName(country)
    }
})

以下是一个例子:http://codepen.io/rustydev/pen/YWyqJB

答案 1 :(得分:0)

这是执行此操作的一种方法 - 但如果列表更新,则不会重新解析此ngInit值。为什么不在JSON请求响应中格式化数据 - 例如:

$http.get("json.json").success(function(data) {
    $scope.exeriences = data.map(function(obj) {
        //Format results;
        if (obj.Country == "DE") {
            obj.Country = "Germany"; //etc
        }
        return obj;
    });
});