ng-disabled不适用于单选按钮和复选框

时间:2017-05-04 15:07:57

标签: angularjs angularjs-ng-disabled

我正在开发一个AngularJS应用程序。我正在尝试创建一个页面,允许用户选择三个单选按钮之一。三个中的两个还在其下方具有复选框,以允许用户在他们选择了适当的单选按钮时选择其他选项。为了防止不正确的复选框选择,我试图在复选框上设置ng-disabled属性。到目前为止,它没有用,我已经尝试了几次不同的迭代。

这是我的HTML:

paste file1 file2 > mergedoutput

我已经尝试将ng-disabled表达式的运算符更改为&&,因为我看过一些文章,其中表明运算符并不意味着他们认为的意思。但这不起作用,如果我只在表达式中放入一个条件,它也不起作用。控制器(还)中没有任何东西试图使用或操纵HTML中的任何ng模型。我得出的结论是,在收音机按钮方面我有一些缺失,但我不能为我的生活弄清楚是什么。

谁能看出我的错误是什么?

1 个答案:

答案 0 :(得分:3)

你应该使用value属性为单选按钮绑定特殊值,当radiobutton的状态改变时,值将保持在ng-model

请参阅下面的代码段:

angular.module("app", [])
  .controller("myCtrl", function($scope) {
    $scope.selectedValue = 'cleared';
    $scope.cleared = false;
    $scope.fraudulent = false;
    $scope.reviewed = false;
  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div class="panel-body" ng-app='app' ng-controller="myCtrl">
  <input type="radio" id="notFraudulentRadio" name="actionSelector" value="cleared" ng-model="selectedValue" /><label for="notFraudulentRadio"> Not Fraudulent</label><br />
  <input type="checkbox" id="highVolumeCustomer" ng-model="highVolumeCustomer" ng-disabled="selectedValue === 'fraudulent' || selectedValue === 'cleared'" /><label for="highVolumeCustomer"> High Volume Customer</label><br />
  <br/>
  <input type="radio" id="isFraudulentRadio" name="actionSelector" value="fraudulent" ng-model="selectedValue"/><label for="isFraudulentRadio"> Appears Fraudulent</label><br />
  <input type="checkbox" id="reportAccount" ng-model="reportAccount" ng-disabled="selectedValue === 'cleared' || selectedValue === 'reviewed'" /><label for="reportAccount"> Report Account</label><br />
  <br/>
  <input type="radio" id="markReviewed" name="actionSelector" value="reviewed" ng-model="selectedValue"/><label for="markReviewed"> Mark As Reviewed For Later</label>
  <br>
  cleared:{{cleared}}<br>
  fraudulent:{{fraudulent}}<br>
  reviewed:{{reviewed}}<br>
  selectedValue: {{selectedValue}}
</div>