禁用 ng 时取消选中复选框 AngularJS

Uncheck a checkbox when it is ng-disabled AngularJS

我有一个包含三个角色的下拉菜单:

  1. 超级管理员
  2. 管理员
  3. 用户

还有这个设置一些额外权限的复选框

我想要实现的是: 当在下拉列表中选择用户角色时,该复选框将被禁用和取消选中。我已经设法禁用它,但如果事先已检查过它,那么在禁用时它会保持检查状态。

这是我的代码:

$scope.model = {
    role: '',
    roles: ['Super Admin', 'Admin', 'User'],
    givePrivileges: false
}

HTML:

<md-input-container>
    <label>Role</label>
    <md-select ng-model="model.role">
        <md-option ng-repeat="role in model.roles" ng-value="role">
            {{role}}
        </md-option>
    </md-select>
</md-input-container>
<md-input-container>
    <md-checkbox ng-disabled="model.role === 'User'">
        Give extra privileges
    </md-checkbox>
</md-input-container>

首先,您的 md-checkbox 上缺少一个 ng-model。您可以将 givePrivileges 变量与 md-checkbox 绑定。然后就可以写一个关于role值的watch语句了。并根据需要更新 givePrivileges 变量。

HTML

 <md-checkbox ng-modal="modal.givePrivileges" ng-disabled="model.role === 'User'">
        Give extra privileges
 </md-checkbox>

JS

$scope.$watch('model.role', function (newVal, oldVal) {
    if (newVal && newVal !== oldVal) {
        if (newVal === ''User) {
            $scope.model.givePrivileges = false;
        }
    }
});

首先,分配 ng-model:

<md-checkbox ng-model="model.givePrivileges" ng-disabled="model.role === 'User'">
    Give extra privileges
</md-checkbox>

然后处理下拉变化:

<md-select ng-model="model.role" ng-change="handleRoleChange()">
    <md-option ng-repeat="role in model.roles" ng-value="role">
        {{role}}
    </md-option>
</md-select>

在控制器中:

$scope.handleRoleChange = function () {
    if ($scope.model.role === 'User') {
        $scope.model.givePrivileges = false;
    }
};