2017-12-13 23 views
0

私はvueアプリでグループのフィルタリングをしようとしています。ネストされた配列でv-modelをグループ化することは可能ですか?私は以下のテンプレートを使用して試してみたVue.jsにネストされた配列を持つv-modelをグループ化することは可能ですか?

...

<div id="app"> 
    <div class="filter__control filter__control--tags"> 
    <div class="filter__label">Colour</div> 
    <div class="filter__list"> 
     <label><input type="checkbox" v-model="selectedTags[0]" value="Harvest">Harvest</label> 
     <label><input type="checkbox" v-model="selectedTags[0]" value="Moss">Moss</label> 
     <label><input type="checkbox" v-model="selectedTags[0]" value="Navy">Navy</label> 
     <label><input type="checkbox" v-model="selectedTags[0]" value="White">White</label> 
    </div> 
    </div> 

    <div class="filter__control filter__control--tags"> 
    <div class="filter__label">Size</div> 
    <div class="filter__list"> 
     <label><input type="checkbox" v-model="selectedTags[1]" value="L">L</label> 
     <label><input type="checkbox" v-model="selectedTags[1]" value="M">M</label> 
     <label><input type="checkbox" v-model="selectedTags[1]" value="S">S</label> 
     <label><input type="checkbox" v-model="selectedTags[1]" value="XL">XL</label> 
     <label><input type="checkbox" v-model="selectedTags[1]" value="XS">XS</label> 
    </div> 
    </div> 
</div> 

そしてVUEインスタンス..

var app = new Vue({ 
    el: '#app', 
    data: { 
    selectedTags: [] 
    }, 
    watch: { 
    selectedTags: function() { 
     // I expect the array to look something like... 
     this.selectedTags = [ 
     ["Navy"], 
     ["XS", "S"] 
     ] 
    } 
    } 
}); 
+0

私はそうは思いません。なぜあなたはしたいですか? – Bert

答えて

1

はウォッチャーのための必要はありません。 SelectedTagsオブジェクトの2つの異なるパラメータにそれらを割り当てるだけです。

var app = new Vue({ 
 
    el: '#app', 
 
    data: { 
 
    selectedTags: { 
 
     color: [], 
 
     size: [], 
 
    } 
 
    }, 
 
    
 
    // if you need exact format of the tags that you wanted use computed property. 
 
    
 
    computed: { 
 
    \t SelectedTagsArrays: function(){ 
 
     \t return [this.selectedTags.color, this.selectedTags.size]; 
 
     } 
 
    } 
 
});
<div id="app"> 
 
    <div class="filter__control filter__control--tags"> 
 
    <div class="filter__label">Colour</div> 
 
    <div class="filter__list"> 
 
     <label><input type="checkbox" v-model="selectedTags.color" value="Harvest">Harvest</label> 
 
     <label><input type="checkbox" v-model="selectedTags.color" value="Moss">Moss</label> 
 
     <label><input type="checkbox" v-model="selectedTags.color" value="Navy">Navy</label> 
 
     <label><input type="checkbox" v-model="selectedTags.color" value="White">White</label> 
 
    </div> 
 
    </div> 
 

 
    <div class="filter__control filter__control--tags"> 
 
    <div class="filter__label">Size</div> 
 
    <div class="filter__list"> 
 
     <label><input type="checkbox" v-model="selectedTags.size" value="L">L</label> 
 
     <label><input type="checkbox" v-model="selectedTags.size" value="M">M</label> 
 
     <label><input type="checkbox" v-model="selectedTags.size" value="S">S</label> 
 
     <label><input type="checkbox" v-model="selectedTags.size" value="XL">XL</label> 
 
     <label><input type="checkbox" v-model="selectedTags.size" value="XS">XS</label> 
 
    </div> 
 
    </div> 
 
</div>

+0

お返事ありがとうございます。私がこのルートを辿ることができなかったのは、グルーピングが何であるかわからないからです。価格、体重などがある可能性があります。 – marcnewport

+0

問題はありません。バックエンドから返されたデータに基づいて、データプロパティを動的に作成するだけです。この$ set()またはVue.setを使用して反応性データを作成し、同じデータに基づいてv-modelを繰り返します。 –

関連する問題