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

标签 angularjs angularjs-ng-disabled

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

这是我的 HTML:

    <div class="panel-body">
        <input type="radio" id="notFraudulent" name="actionSelector" ng-model="cleared" /><label for="notFraudulentRadio"> Not Fraudulent</label><br />
        <input type="checkbox" id="highVolumeCustomer" ng-model="highVolumeCustomer" ng-disabled="(fraudulent||cleared)" /><label for="highVolumeCustomer"> High Volume Customer</label><br />
        <br/>
        <input type="radio" id="appearsFraudulent" name="actionSelector" ng-model="fraudulent" /><label for="isFraudulentRadio"> Appears Fraudulent</label><br />
        <input type="checkbox" id="reportAccount" ng-model="reportAccount" ng-disabled="(cleared||reviewed)" /><label for="reportAccount"> Report Account</label><br />
        <br/>
        <input type="radio" id="markReviewed" name="actionSelector" ng-model="reviewed" /><label for="markReviewed"> Mark As Reviewed For Later</label>
    </div>

我曾尝试将 ng-disabled 表达式的运算符更改为 &&,因为我看到一些文章建议运算符并不代表人们认为的意思。但这是行不通的,如果我只在表达式中放置一个条件,它也行不通。 Controller 中(目前)还没有任何东西尝试使用或操作 HTML 中的任何 ng-models。我得出的结论是,我在单选按钮方面遗漏了一些东西,但我终究无法弄清楚是什么。

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

最佳答案

应该使用value属性为单选按钮绑定(bind)特殊的值,当单选按钮的状态改变时,该值将保持在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>

关于angularjs - ng-disabled 不适用于单选按钮和复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43786657/

相关文章:

javascript - Angularjs + Cordova + UploadFile 将 Img 转换为文件以执行 POST

javascript - 更改 Angular Controller 内的 http header

angularjs - Angular 应用程序的最大圈复杂度

angularjs - 为什么 ng-disabled 不起作用?

javascript - Angular-ui-router url 被误认为是参数

javascript - AngularJS (1.5.8) - 如何直接从获取 json 对象的 Controller 内填充选择选项列表?

javascript - 在 AngularJs 中动态更改按钮文本

javascript - 根据angularjs中的当前日期传递启用和禁用按钮

css - Microsoft Edge - 禁用的链接是可点击的

javascript - Angularjs - 如果任何值超过 ng-repeat 元素值,如何禁用提交按钮