用ng-repeat中的API值替换值

时间:2015-04-17 03:39:22

标签: javascript angularjs angularjs-ng-repeat ionic-framework

我将一堆JSON对象列出到视图中,但只包含它的类别ID。不是我需要显示的名称。我必须单独$http调用以处理哪些项匹配。值不会呈现给视图。代码:

$scope.cardCategories = function(id) {
  angular.forEach($scope.categoryFilter, function(category, index){
    if (category.id == id) {
      //console.log(category.name);
      return category.name;
    } else {
      return;
    }
  })
}

简化的ng-repeat中的值

<div ng-repeat="topic in latest">
    {{cardCategories(topic.category_id)}}
</div>

我也尝试将其写为过滤器,但不会显示该值。控制台显示匹配项。我怀疑是我必须处理原始的latest数组。谢谢。

.filter('cardCategories', function($rootScope, $state){
return function(catId) {
  if (catId !== undefined && $rootScope.cardCategories) {
    angular.forEach($rootScope.cardCategories.categories, function(category, index){
      if (category.id == catId.category_id) {
        return category.name;
      } else {
        return;
      }
    })
  }
}
})

查看:

{{topic.category_id | cardCategories}}

2 个答案:

答案 0 :(得分:1)

return回调函数中的forEach语句不会返回$scope.cardCategories中的值,而是从您提供给{{{的回调中返回某些 1}}(而且很高兴地忽略了它)。尝试这样的事情:

forEach

另外 - 没有办法打破(提前停止)$scope.cardCategories = function(id) { var i = $scope.categoryFilter.length; // assuming it's an array while(i--) { if($scope.categoryFilter[i].id === id) { return $scope.categoryFilter[i].name; } } }; 循环,所以出于性能原因,如果你在数组/对象中找到某些东西,最好避免它。

答案 1 :(得分:1)

如果当前迭代与您传入的ID不匹配,则需要确保forEach循环不会执行return

从if语句中取出else条件

$scope.cardCategories = function(id) {
  angular.forEach($scope.categoryFilter, function(category, index){
    if (category.id == id) {
      return category.name;
    }
  });
};