1

我有这个包含三个角色的下拉列表:

  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>
4

2 回答 2

2

首先,分配 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;
    }
};
于 2018-07-03T08:06:08.580 回答
1

首先,您的 md 复选框上缺少 ng-model。您可以将 givePrivileges 变量与 md-checkbox 绑定。然后你可以写一个关于角色值的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;
        }
    }
});
于 2018-07-03T08:05:20.080 回答