2016-05-04 9 views
0

私はイオンアプリケーションを持っています(Angularjsと同じように動作します)。ng-checkedとng-modelですべてを選択するには

<ion-list class="list-inset subcategory" ng-repeat="item in shops"> 
     <ion-checkbox class="item item-divider item-checkbox-right" ng-model="selectAll"> 
     {{item}} 
     </ion-checkbox> 
     <ion-item ng-repeat="value in data | filter:{shopName: item}" class="item-thumbnail-left" ng-click="openProduct(value)"> 
... 
     <div class="row"> 
      <ion-checkbox stop-event='click' ng-model="value.selected" ng-checked="selectAll">{{value.name}}</ion-checkbox> 
     </div> 
... 
    </ion-list> 

ng-model="selectAll"で項目をクリックするとすべての項目が選択されます。しかし、私はプロパティーvalue.selectedを持っています。それぞれvalueに対してfalseに設定されます。 ng-model="value.selected"でアイテムをクリックすると、それが変更されます。しかし、私はすべてを選択してng-model="selectAll"で項目をクリックすると、この性質は変わりません。 お願いします。

注:私はng-repeatにng-repeatを持っています。最初のng-repeatはショップ向け、2番目は商品用です。そして私はshopNameによってフィルタを持っています。そして、私は店ですべてを選択したい。今は、私が望む方法で動作しますが、プロパティーは変更されませんvalue.selected。値はプロダクト、アイテムはショップです。

答えて

0

の項目にngClickを使用できます。 ng-clickで関数を呼び出し、他のすべての項目に対してselected = trueを指定することができます(ng-model="value.selected")。

1

selectAllの状態は、他のチェックボックスの状態から導き出すことができますので、別のフィールドとして保存しないでください。

selectAllモデルでgetterSetterを使用して、チェックする天気を判断できます。例えばニース

<input type="checkbox" ng-model="selectAll" ng-model-options="{getterSetter: true}"/> 

JS

var getAllSelected = function() { 
    var selectedItems = $scope.Items.filter(function (item) { 
     return item.Selected; 
    }); 

    return selectedItems.length === $scope.Items.length; 
} 

var setAllSelected = function (value) { 
    angular.forEach($scope.Items, function (item) { 
     item.Selected = value; 
    }); 
} 

$scope.selectAll = function (value) { 
    if (value !== undefined) { 
     return setAllSelected(value); 
    } else { 
     return getAllSelected(); 
    } 
} 

http://jsfiddle.net/2jm6x4co/

+0

、でもあなたはモデル式として関数を渡すことができ知りませんでした。 – alphapilgrim

+0

私にとってはうまくいかない。私はng-repeatでフィルターとng-repeatを持っています。最初のng-repeatはショップ向けです。 Secodは製品用です。そして、商品json 'shopName'の中で各商品を各店舗に優先的に設定します。そして、すべてを選択するためにクリックすると、すべてのショップのすべての製品が選択されました。しかし、私はすべてのお店で選択する必要があります。 –

関連する問題