使用单向绑定禁用复选框

时间:2015-04-14 20:53:41

标签: angularjs

我有一个复选框列表。我需要禁用最初将模型值设置为false的所有元素。但是由于双向绑定,当我取消选择一个复选框时它会出现问题,它会被禁用。怎么解决?

<div class="item-s" ng-repeat="element in model.elements">
    <input id="element{{$index.toString()}}"
        type="checkbox"
        ng-true-value="true"
        ng-false-value="false"
        ng-model="element.value"
        ng-disabled="!element.value" />
    <label for="element{{$index.toString()}}">{{element.name}}</label>
</div>

2 个答案:

答案 0 :(得分:2)

在绑定表达式前面添加::会导致它只被评估一次。这应该可以满足您的需求:

ng-disabled="::!element.value"

这是关于一次性绑定的Angular's docs

答案 1 :(得分:-1)

尝试使用ng-init:

<div id="myApp" ng-controller="MyController">
    <div class="item-s" ng-repeat="element in model.elements">
        <input id="element{{$index.toString()}}" type="checkbox" ng-true-value="true" ng-false-value="false" ng-model="element.value" ng-init="initValue = element.value" ng-disabled="initValue==false" />
        <label for="element{{$index.toString()}}">{{element.name}}</label>
    </div>
</div>

这是JSFiddle:http://jsfiddle.net/jz65o9tv/