【问题标题】:Enable and disable check boxes using ng-disabled使用 ng-disabled 启用和禁用复选框
【发布时间】:2015-04-16 21:44:59
【问题描述】:

我有一个复选框+标签的列表。如果选中第一个,则必须禁用所有复选框(第一个除外)。问题是如果我取消选中第一个复选框,所有其他复选框仍然被禁用,我希望它们再次启用。

JS

<li ng-repeat="ques in questions">
        <input type="checkbox" ng-click="addRemove(ques)" ng-checked="contains(ques) != -1" ng-disabled="noneSelected && $index != 0"/> {{ques.question}}
</li>

控制器

 if (ques.question == "None") {
            var index = $scope.contains(ques);
            if (index != -1) {
                $scope.noneSelected = false;
                $rootScope.selectedQuestions.splice(index, 1);
            } else {
                $scope.noneSelected = true;
                $rootScope.selectedQuestions = [];
                $rootScope.selectedQuestions.push(ques);
            }
 }

解决方案

在其余代码中,我在 selectedQuestions 数组上做了一些 sutff。它造成了一些麻烦。

【问题讨论】:

  • 控制器中的代码是在 ng-click 中调用的吗?
  • 是的,这是函数“addRemove(ques)”
  • 你能告诉我你的questions数组值吗?
  • 它们来自数据库它包含一个ID,问题(这是文本),描述(也是文本)
  • 我的第一个猜测是 noneSelected 属性没有在正确的范围内定义,但不确定是如何发生的。

标签: angularjs checkbox


【解决方案1】:

我看不到你的其余代码,但请看下面的演示:

var app = angular.module('app', []);

angular.module('app').controller('homeCtrl', homeCtrl);

homeCtrl.inject = ['$scope']

function homeCtrl($scope) {

  $scope.questions = [{
    question: "what"
  }, {
    question: "when"
  }, {
    question: "who"
  }]


};
<!DOCTYPE html>
<html ng-app="app">

<head>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>

<body ng-controller="homeCtrl">

  <li ng-repeat="ques in questions">
    <input type="checkbox" ng-disabled="questions[0].val && $index>0" ng-model="ques.val" />{{ques.question}} {{question.val}}
  </li>
</body>

</html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多