2015-08-29 19 views
2

http://plnkr.co/edit/AxBJs2XICPtWaA7bup8G?p=preview如果選中的複選框應用表達> 1

<li ng-repeat="d in data"><input type="checkbox"/>{{$index}}</li> 
<button ng-show="checkismorethanone">Save</button> 

我不能用NG-模型,因爲它會檢查所有的複選框。我怎麼知道是否有任何複選框被選中?我想顯示保存按鈕,如果任何人的複選框被選中,或者如果沒有更多的按鈕被選中,隱藏按鈕。

+0

沒有接受者的呢? –

回答

0

檢查演示:Plunker

你需要一個對象,說results', to store the模型values of your selection. Use NG-模式to bind the $指數個checkbox to結果[$指數]`。

<li ng-repeat="d in data"><input ng-model="results[$index]" value="{{d}}" type="checkbox"/>{{$index}}</li> 
<button ng-show="checkismorethanone">Save</button> 
{{ results | json }} 
<button ng-show="showButton()">Submit</button> 

在控制器上,for循環遍歷當前選擇檢查一些複選框是否被選中。 ng-showtrue如果任何複選框被選中。

$scope.results = {}; 
$scope.showButton = function() { 
    for (var key in $scope.results) { 
    if ($scope.results[key]) { 
     return true; 
    } 
    } 
}; 

切換取決於results值提交按鈕的狀態。

+0

這是什麼?如果有任何選中的按鈕,我想顯示按鈕,否則隱藏按鈕。 –

+0

那麼,檢查我更新的[plunker](http://plnkr.co/edit/2G1vlesd6sCxMYIH77EX?p=preview)和更新的答案。 – Joy

+0

for在做什麼?爲什麼你需要首先將結果初始化爲空對象? –

1

你可以做這樣的事情:

<li ng-repeat="d in data"><input type="checkbox" ng-model="d.val"/>{{$index}}</li> 
<button ng-show="anyCheckBoxSelected()">Save</button> 

而這個控制器文件:

$scope.data = [{val:false, num:1 },{num:2, val: false},{num:3, val:false},{num:4, val:false}]; 
$scope.anyCheckBoxSelected = function() { 
    var checked = $filter("filter")($scope.data , {val:true}); 
    return checked.length; 
} 

這裏是plnkr,從你的鏈接分叉: http://plnkr.co/edit/VApxbuEBUljkJDjSusxw

+0

複雜的東西.. –

+0

如果我沒有控制器超過$ scope.data會怎麼樣?把它想象成外部API。 –

0

你可以只需使用一個變量來計算點擊次數,即

如果複選框是checkedincrement的計數器,如果checkbox沒有被選中decrement的計數器。

顯示按鈕,如果是counter count大於0

//index.html

<ul > 
    <li ng-repeat="d in data" > 
     <input type="checkbox" name="{{$index}}" ng-click="checkboxOnClick($event)" /> {{$index}} 
    </li> 
    </ul> 
    <button ng-show="checkCount">Save</button> 

//app.js 變種應用= angular.module( 'plunker',[]) ;

app.controller('MainCtrl', function($scope) { 
    $scope.data = [1,2,3,4]; 

    $scope.checkCount = 0; 

    $scope.checkboxOnClick = function($event){ 
    if($event.target.checked){ 
     $scope.checkCount++; 
    }else{ 
     $scope.checkCount--; 
    } 

    }; 

}); 

檢查plnkr,

http://plnkr.co/edit/KolYTZjzPvlyUGNF6elZ?p=preview

相關問題