私の問題は、すでに入力した検索入力フィールドを作成し、ng-repeatで検索フィルタを使用していることです。私が今したいのは、select allを使用して検索したすべてのアイテムを選択することです。この瞬間にselect allチェックボックスをクリックすると、配列から検索したもの以外のアイテムがすべてチェックされます。Angular JS filter検索入力付きの配列
これは私のhtmlです:
<div class="modal-body">
<div>
<md-input-container flex> <label>Search</label>
<input ng-model="search.name"> </md-input-container>
<md-button class="md-primary" ng-click="saveValues()">Update</md-button>
</div>
<div class="md-list">
<md-checkbox ng-model="modelItemsList.allItemsSelected"
ng-change="selectAll()">
Select all
</md-checkbox>
<md-list> <md-list-item class="md-3-line"
ng-repeat="mod
elItem in modelItemsList | filter:search">
<div class="md-list-item-text">
<md-checkbox ng-model="modelItem.isChecked " aria-label="Checkbox 1" ng-change="selectModelItem(modelItem)">
<h3>{{ $eval('modelItem.'+propertyName) }}</h3>
<p>{{ $eval('modelItem.'+propertyDesc) }}</p>
</md-checkbox>
</div>
</md-list-item> </md-list>
</div>
</div>
これは私の選択、すべての関数である:
$scope.selectAll = function(){
console.debug("searchText", $scope.search);
//filteredArray = filterFilter($rootScope.modelItemsList, $scope.search);
//console.log(filteredArray);
console.log($rootScope.modelItemsList.allItemsSelected);
$rootScope.temp = [];
console.log($scope.modelItemsList);
$rootScope.modelItemsList.allItemsSelected = !$rootScope.modelItemsList.allItemsSelected;
console.log($rootScope.modelItemsList.allItemsSelected);
if($rootScope.modelItemsList.allItemsSelected){
for (var i = 0; i < $scope.modelItemsList.length; i++) {
$rootScope.temp.push($scope.modelItemsList[i].name);
console.log($scope.modelItemsList[i].name);
$scope.modelItemsList[i].isChecked = $rootScope.modelItemsList.allItemsSelected;
console.log($scope.modelItemsList[i].isChecked);
console.log($rootScope.modelItemsList.allItemsSelected);
}
}
else if (!$rootScope.modelItemsList.allItemsSelected){
for (var i = 0; i < $scope.modelItemsList.length; i++) {
$scope.modelItemsList[i].isChecked = $rootScope.modelItemsList.allItemsSelected;
$rootScope.temp = [];
console.log($scope.modelItemsList[i].isChecked);
}
}
}
私は、フィルタのいくつかの種類を作るべきだと思いますが、私はそれほどわかりません。 JSファイルのselect all機能を意味します。どのように私はこれを行う必要があります誰も考えを持っていますか?
<md-list-item class="md-3-line" ng-repeat="modelItem in filtered = (modelItemsList | filter:search)">
...
</md-list-item>
つまりは次にコントローラにあなたはFYI $scope.filtered
あなたにアクセスすることができます。
ビューで$にevalを使用する理由私はわからないんだけど、それはだ悪い習慣と私ドンなぜここでそれをする必要があるか分かりません。 – SLearner