2014-04-25 41 views
0

我生成使用一些複選框NG-重複這樣添加類按鈕,如果任何複選框被選中

<input type="checkbox" ng-repeat="item in items" id="{{item.id}} /> 

有一些10+複選框,我想從一個按鈕刪除禁用類,如果任何一個複選框被選中。

我已經試過這樣的,但不工作

<input ng-model="master" type="checkbox" ng-repeat="item in items" id="{{item.id}} /> 
<input type="button" ng-class="{disabled: !master}" value="Click Me" /> 

回答

0

每個複選框應該有自己的NG-模型。這裏有一個如何可以這樣做::

<input type="checkbox" ng-repeat="item in items" id="{{item.id}} ng-model="item.selected"/> 

然後,你需要創建在您的控制器的功能,如果沒有複選框的檢查,檢查的例子:

$scope.areAllUnchecked = function() { 
    // loop through all the chcekboxes, return true if all are unchecked 
    for (var i = 0; i < $scope.items.length; i++) { 
    // ... 
    } 
} 

最後,使用此功能在你的ng級:

<input type="button" ng-class="{disabled: 'areAllUnchecked()'}" value="Click Me" /> 
+0

其實是試圖避免創建一些像areAllUnchecked方法。如果我可以創建一個方法,那麼我可以直接將方法附加到複選框,如ng-onclick =「areAllUnchecked」... – coure2011

+1

@ coure2011沒有任何模型的複選框有什麼意義?下面是一個演示上述想法的示例:http://plnkr.co/edit/puGDSHabwMKV0tmLTVKH?p=preview –

+0

@ coure2011:如果在$ scope中有另一個變量(例如$ scope.allUnchecked),則可以避免使用該函數您存儲是否所有複選框都未選中。然後,您需要$查看所有項目,並在複選框被選中/取消選中時,在$ scope.allUnchecked中設置適當的值(true或false)。這可能會提高性能,但除非您確實需要提高性能,否則會增加不必要的複雜性。 –

相關問題