将值替换为 ng-repeat 中的 API 值
Replace value with API value in ng-repeat
我在视图中列出了一堆 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}}
回调函数forEach
中的那个return
语句不会return一个来自$scope.cardCategories
的值,它returns something 来自你提供给 forEach
的回调(并且 angular 愉快地忽略它)。尝试这样的事情:
$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
循环,因此出于性能原因,如果您在 array/object 中定位某些内容,最好避免它。
如果当前迭代与您传入的 ID 不匹配,您需要确保 forEach
循环不会执行 return
。
从你的 if 语句中取出 else
条件
$scope.cardCategories = function(id) {
angular.forEach($scope.categoryFilter, function(category, index){
if (category.id == id) {
return 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-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}}
回调函数forEach
中的那个return
语句不会return一个来自$scope.cardCategories
的值,它returns something 来自你提供给 forEach
的回调(并且 angular 愉快地忽略它)。尝试这样的事情:
$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
循环,因此出于性能原因,如果您在 array/object 中定位某些内容,最好避免它。
如果当前迭代与您传入的 ID 不匹配,您需要确保 forEach
循环不会执行 return
。
从你的 if 语句中取出 else
条件
$scope.cardCategories = function(id) {
angular.forEach($scope.categoryFilter, function(category, index){
if (category.id == id) {
return category.name;
}
});
};