2015-04-14 11 views
5

Tek bir onay kutusu listem var. İlk başta false olarak ayarlanmış model değeri olan tüm elemanları devre dışı bırakmam gerekiyor. Ancak iki yollu bağlantıdan dolayı bir onay kutusunun seçimini kaldırdığımda bir sorunum var, devre dışı bırakılıyor. Nasıl çözeceksin? bir bağlanma ifade önüne :: eklemeTek yönlü bağlantıyla onay kutusunu devre dışı bırakma

<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> 
+0

Bir JSFiddle veya Plunker örneğini yaratabilir mi? Teşekkürler. – Hoyen

+0

Ama temel olarak, eğer element.initValue gibi bir elemanda başka bir özelliği ayarlayabilirseniz, ng-disabled = "! Element.initValue" – Hoyen

+0

@ Hoyen'i ayarlayabilirsiniz, bunu biliyorum. Ancak tüm çift alanların yaratılması sadece iyi bir fikir gibi görünmüyor. Daha iyi bir şey olması gerektiğini düşündüm. – bambi

cevap

2

bu sadece bir kere elde edilmesine neden olur. Bu ihtiyacın olanı almalısınız:

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

Burada bağlayıcı tek seferlik Angular's docs bu.

-1

ng-init kullanmayı deneyin:

İşte
<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 geçerli: http://jsfiddle.net/jz65o9tv/

+0

[Angular'ın belgelerine göre] (https://docs.angularjs.org/api/ng/directive/ngInit), yalnızca özel özellikleri takmak için 'ng-init' ile' ng-repeat 'kullanmalısınız. – SethGunnells

İlgili konular