ng-disabled不允许在ng-repeat

时间:2015-09-29 14:50:28

标签: javascript angularjs ng-repeat

我正在分享一个小提琴,我试图禁用禁用所有输入文本框中的值,但是当我尝试在文本框中输入一个没有值的文本框时通过只输入一个字符来禁用它。如果有人遇到类似问题,请分享您的想法..

Disabling input text box inside ng-repeat

  <input type="text" ng-model="valuesForOutputs[item.name][i]" 
                                        ng-disabled="valuesForOutputs[item.name][i]" required   name="value"
                                               placeholder="Enter value">

2 个答案:

答案 0 :(得分:1)

问题是你想要禁用输出值的初始状态,然后你修改它并改变禁用/启用的状态。

相反,您应该创建值的原始副本并使用它来禁用。然后更新跟踪当前值的值$scope.valuesForOutputs

尝试添加以下内容:

var origValuesForOutputs = angular.copy($scope.valuesForOutputs);

$scope.isDisabled = function(output, month) {
   var val = origValuesForOutputs[output][month];
   return val && val.length;
 };

并将ng-disabled更改为:

ng-disabled="isDisabled(item.name, i)"

以下是plunker:http://plnkr.co/edit/2AeNujzK2XLtBzdHbLNS?p=preview

答案 1 :(得分:1)

你可以在ng-init中使用这个技巧:

<td ng-repeat="i in months" 
    ng-init="wasEmpty=!valuesForOutputs[item.name][i]">{{valuesForOutputs[item.name][i]}}
    <input type="text" ng-model="valuesForOutputs[item.name][i]"
        ng-disabled="valuesForOutputs[item.name][i] && !wasEmpty" 
        required name="value" placeholder="Enter value">
</td>