根据下拉列表更新ng-repeat中的值

时间:2014-09-15 12:30:27

标签: javascript jquery angularjs angularjs-ng-repeat angularjs-ng-change

我正在使用ng-repeat构建一个表来显示一些信息。显示的其中一列是“权重”列。我们将所有重量以千克为单位存储在数据库中,但需要让用户选择以磅为单位显示重量。

我有一个下拉菜单,用户可以选择权重单位,在ng-change上我正在尝试更新表格。但是,我无法让它工作。

以下是我的更改功能(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 个答案:

答案 0 :(得分:1)

请更新您的功能

$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;
        })
    }
};

答案 1 :(得分:0)

$ 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属性,而不是集合本身。