我将一堆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}}
答案 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;
}
});
};