我在输入上使用以下角度绑定:
<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.IsDisabled
为true
,我需要停用输入并将输入值设置为0
,如果它更改为false
我需要将其更改回原始value.Percentage
值。
据我所知,这是我对Angular的新手,最初我把它作为一个指令,但似乎有点矫枉过正,我能用标准绑定来实现吗?
答案 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]};