2017-07-05 12 views
1

せずに配列内のチェックボックスの値を入れて、私はいくつかのチェックボックスがあります - 私は、配列内の値を入れしようとしていますはNG-繰り返し

<label>CHANNELS</label> 
    <md-checkbox ng-model="channel[0]" class="md-primary md-hue-2" ng-checked="selected.indexOf(channel[0]) > -1" ng-click="toggleSelection(channel[0])" value="channel[0]">CHANNEL A</md-checkbox> 
    <md-checkbox ng-model="channel[1]" class="margin-left-1 md-primary md-hue-2" ng-checked="selected.indexOf(channel[1]) > -1" ng-click="toggleSelection(channel[1])" value="channel[1]">CHANNEL B</md-checkbox> 
    <md-checkbox ng-model="channel[2]" class="margin-left-1 md-primary md-hue-2" ng-checked="selected.indexOf(channel[2]) > -1" ng-click="toggleSelection(channel[2])" value="channel[2]">CHANNEL C</md-checkbox> 
    <md-checkbox ng-model="channel[3]" class="margin-left-1 md-primary md-hue-2" ng-checked="selected.indexOf(channel[3]) > -1" ng-click="toggleSelection(channel[3])" value="channel[3]">CHANNEL D</md-checkbox> 
    <md-checkbox ng-model="channel[4]" class="margin-left-1 md-primary md-hue-2" ng-checked="selected.indexOf(channel[4]) > -1" ng-click="toggleSelection(channel[4])" value="channel[4]">CHANNEL E</md-checkbox> 

。 私のディレクティブコードがある: -

scope.channels = ['CHANNEL A','CHANNEL B','CHANNEL C','CHANNEL D','CHANNEL E']; 
        scope.selected = []; 

      scope.toggleSelection = function toggleSelection(channel) { 
       console.log(channel); 
       var idx = scope.selected.indexOf(channel); 
        console.log(idx); 
       if (idx > -1) { 
       scope.selected.splice(idx, 1); 
       } 

       else { 
       scope.selected.push(channel); 
       } 
      }; 

私はNG-リピートを使用することによって、それは私がcorrect.Iすることは困難であるが、この方法だけが仕事になりたいいくつかの他のCSSの問題を持っていることを利用して、より良い動作します知っています。いずれにしても、ng-repeatを使用せずにどのように動作させることができるか教えてください。

+1

あなたはng-repeatなしでこれを行うべきである理由がないので、CSSの問題に関する質問を投稿するべきです。 –

答えて

2

私もngRepeat作品を作るお勧めしますが、尋ねた質問に答えるために...

は一緒にngModelとngCheckedを使用しないでください。ボックスがチェックされている場合、これはchannel配列の対応する値にselected配列の値を設定します

<label>CHANNELS</label> 
    <md-checkbox ng-model="selected[0]" class="md-primary md-hue-2" ng-true-value="channel[0]" ng-false-value="null">CHANNEL A</md-checkbox> 
    <md-checkbox ng-model="selected[1]" class="md-primary md-hue-2" ng-true-value="channel[1]" ng-false-value="null">CHANNEL B</md-checkbox> 
    <md-checkbox ng-model="selected[2]" class="md-primary md-hue-2" ng-true-value="channel[2]" ng-false-value="null">CHANNEL C</md-checkbox> 
    <md-checkbox ng-model="selected[3]" class="md-primary md-hue-2" ng-true-value="channel[3]" ng-false-value="null">CHANNEL D</md-checkbox> 
    <md-checkbox ng-model="selected[4]" class="md-primary md-hue-2" ng-true-value="channel[4]" ng-false-value="null">CHANNEL E</md-checkbox> 

はこれを試してみてください。注:selected配列には常に4つのメンバーがあり、そのうちのいくつかはnullである可能性があるため、selected.lengthを使用して何かがチェックされているかどうかを判断することはできません。

+2

そのモデル配列にfalse値を選択しない方法はありますか?選択されたチェックボックスの値の配列のみを作成します。 –

+0

アレイを使用する前にフィルタリングするだけです。 'selected.filter(function(value){return !! value;})' –

関連する問題