javascript - Angular ng-disable 复选框不更新动态源

标签 javascript angularjs checkbox

我有几个从数组源动态生成的复选框:

        /*js*/
        $scope.arrondissements =   JSON.parse('
    [{"name":"4e","checked":false,"disable":true},  
    {"name":"5e","checked":false,"disable":false},  
    {"name":"11e","checked":false,"disable":false},  
    {"name":"12e","checked":false,"disable":false},  
    {"name":"13e","checked":false,"disable":false},  
    {"name":"14e","checked":false,"disable":false},  
    {"name":"15e","checked":false,"disable":false},  
    {"name":"16e","checked":false,"disable":false},  
    {"name":"17e","checked":false,"disable":false},  
    {"name":"18e","checked":false,"disable":false},  
    {"name":"19e","checked":false,"disable":false},  
    {"name":"20e","checked":false,"disable":false}]');


        <!-- HTML -->
        <div ng-repeat="item  in arrondissements" class="checkbox-inline ">
             <label>
             <input type="checkbox" ng-disabled="{{item.disable == true}}"
                      value="{{item.checked}}" ng-model="item.checked" >
              <span>{{item.name}}</span>
             </label>
        </div>

复选框已正确生成,但当源更新时,复选框不会更新

/*js*/
$scope.disableCb = function () {
      $scope.arrondissements[5].disable = true;
      $scope.arrondissements[6].disable = true;
      $scope.arrondissements[7].disable = true;
}

<!-- HTML -->
<button ng-click="disableCb()">disable</button>  

你能告诉我为什么以及如何解决它吗?

我做了一个 Plunker:http://plnkr.co/edit/jD1l3NgJuduTOoskpeVM

最佳答案

您应该在 Controller 函数中定义 $scope.disableCb 函数。

function controller( $scope) {
    var vm = $scope;

     $scope.title = 'controller';

$scope.arrondissements =   JSON.parse('[{"name":"4e","checked":true,"disable":true},{"name":"5e","checked":false,"disable":false},{"name":"11e","checked":false,"disable":false},{"name":"12e","checked":false,"disable":false},{"name":"13e","checked":false,"disable":false},{"name":"14e","checked":false,"disable":false},{"name":"15e","checked":false,"disable":false},{"name":"16e","checked":false,"disable":false},{"name":"17e","checked":false,"disable":false},{"name":"18e","checked":false,"disable":false},{"name":"19e","checked":false,"disable":false},{"name":"20e","checked":false,"disable":false}]');

$scope.disableCb = function () {

         $scope.arrondissements[5].disable = true;
         $scope.arrondissements[6].disable = true;
         $scope.arrondissements[7].disable = true;
      }

    }

我还修复了您使用指令的方式。我删除了复选框上的 value 属性,因为它们对于 ng-model 是多余的。 我也修复了你对 ng-disabled 的使用

 <div ng-repeat="item  in arrondissements" class="checkbox-inline ">
                    <label>
                        <input type="checkbox" ng-disabled="item.disable"
                                ng-model="item.checked" >
                        <span>{{item.name}}</span>
                    </label>
                </div>

              <button ng-click="disableCb()">disable</button>  

查看我在你的 plunker 上的 fork :http://plnkr.co/edit/v1fwlf7QH0189WAhv6qM?p=preview

关于javascript - Angular ng-disable 复选框不更新动态源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38655915/

相关文章:

php - 将 csv 下载为 zip 格式

angularjs - React 依赖注入(inject)或类似的?

c#:创建复选框的 10x10 字段(和数组)

javascript - 防止dangerouslySetInnerHTML在React中继承css

javascript - 如何发送 HttpResponse(包括 JSON 和 html)

java - 使用 REST 端点返回字符串

Java Swing : Need a good quality developed JTree with checkboxes

Javascript - 对不同输入求和后选中/取消选中复选框

javascript - Javascript 有没有办法选择与多个类名的 bool 表达式匹配的元素?

javascript - Angular Create Dynamic 年份下拉列表