Обновление значения в ng-repeat на основе выпадающего списка
Я строю таблицу с помощью ng-repeat для отображения некоторой информации. Один из отображаемых столбцов - это столбец "Вес". Мы храним весь вес в килограммах в базе данных, но нужно дать пользователю возможность отображать вес в фунтах.
У меня есть выпадающий список, где пользователь может выбрать единицу веса, а при изменении нг я пытаюсь обновить таблицу. Тем не менее, у меня проблемы с тем, чтобы заставить его работать.
Вот посмотрите на мою функцию изменения (полный пример в JSFiddle):
$scope.ConvertWeights = function () {
if ($scope.schedWeight.ID == "I") {
$scope.items.Weight = $scope.items.Weight * 2.2046;
} else {
$scope.items.Weight = $scope.items.Weight / 2.2046;
}
}
Вот JSFiddle из того, что я сейчас пытаюсь. Если кто-нибудь сталкивался с подобной ситуацией, я был бы признателен за любые советы о том, как заставить это работать! Спасибо!
2 ответа
Пожалуйста, обновите вашу функцию
$scope.ConvertWeights = function () {
if ($scope.schedWeight.ID == "I") {
angular.forEach($scope.items, function(item){
item.Weight = item.Weight * 2.2046;
})
} else {
angular.forEach($scope.items, function(item){
item.Weight = item.Weight / 2.2046;
})
}
};
$scope.items - это ваша коллекция элементов (массив). Вы, вероятно, пытались написать:
$scope.ConvertWeights = function () {
if ($scope.schedWeight.ID == "I") {
for (var i in $scope.items)
$scope.items[i].Weight = $scope.items[i].Weight * 2.2046;
} else {
for (var i in $scope.items)
$scope.items[i].Weight = $scope.items[i].Weight / 2.2046;
}
}
Вам нужно изменить свойство Weight для каждого элемента, а не для самой коллекции.