Javascript 将值替换为ng repeat中的API值
我在一个视图中列出了一组JSON对象,但只包括它的类别ID。不是我需要显示的名称。我必须单独调用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);
$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;
}
});
};