Обновление значения в 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 для каждого элемента, а не для самой коллекции.

Другие вопросы по тегам