如何使用角度有条件地设置输入的值?

时间:2014-06-04 05:20:50

标签: javascript angularjs

我在输入上使用以下角度绑定:

<li data-ng-repeat="value in model.Values">
  <input type="number"
       data-required
       data-min="-10"
       data-max="10"
       data-ng-model="value.Percentage"
       ng-disabled="model.IsDisabled" />

如果model.IsDisabledtrue,我需要停用输入并将输入值设置为0,如果它更改为false我需要将其更改回原始value.Percentage值。

据我所知,这是我对Angular的新手,最初我把它作为一个指令,但似乎有点矫枉过正,我能用标准绑定来实现吗?

2 个答案:

答案 0 :(得分:0)

您可以做的是在控制器中创建另一个数组,如:

$scope.newValues = []
model.Values.forEach(function(index, value){
    if($scope.model.IsDisabled)
        $scope.newValues.push(0)
    else
        $scope.newValues.push(value)
})

现在使用新数组进行HTML绑定。

如果您不想创建新数组,可以向calculatePercentage等模型添加新属性,并将其用于绑定。

你可以在model.IsDisabled上随时重新计算数组。

答案 1 :(得分:0)

你不需要看任何东西只是克隆你的数组,并在复选框的值改变时保存并从中获取值...

我在这里为你创建了一个PLUNKER ...

<强>更改

  • track by $index我将此添加到ng-repeat中,否则当我们将所有值设置为0时,angular将抛出dupes错误。
  • 我使用Values而不是Values.Percentage

    为此示例剪切了一些对象

    $ scope.model = {'Values':[2,5,8,3,7]};