Javascript 将值替换为ng repeat中的API值

Javascript 将值替换为ng repeat中的API值,javascript,angularjs,angularjs-ng-repeat,ionic-framework,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);

我在一个视图中列出了一组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重复中的值

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


{{topic.category\u id | cardCategories}}
forEach
回调函数中的
return
语句不会从
$scope.cardCategories
返回值,它会从您提供给
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;
   }
  }
};

此外--没有办法中断(提前停止)一个
angular.forEach
循环,因此出于性能原因,如果您在数组/对象中定位某个对象,最好避免它。

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

从if语句中取出
else
条件

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

你从console.log(category.name)中得到了什么
在您的
forEach
循环中?正确的类别名称。返回后,$scope上有一个set语句。。。在第一个代码中。。。请解决这个问题谢谢,我的意思是省去它。有些情况下没有匹配,所以我需要检查它的存在。我尝试添加一个
else
,但它不会返回值。非常感谢。这可能也会起作用,但我会使用
while
语句来提高性能。谢谢你的帮助。@ZappB。性能是一样的。它们在性质上都是线性的。谢谢。在这两种解决方案中,
else
都会破坏它。这是为什么?@ZappB。在函数内部运行
return
时,函数立即退出。因此,除非运行函数的对象的第一个属性具有要查找的id,否则函数将返回
undefined
$scope.cardCategories = function(id) {
  angular.forEach($scope.categoryFilter, function(category, index){
    if (category.id == id) {
      return category.name;
    }
  });
};