2017-12-13 3 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 객체의 두 가지 매개 변수에 이들을 지정하면됩니다.

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

아무런 문제가 나타나지 않습니다. 백엔드에서 반환 된 데이터를 기반으로 동적으로 데이터 속성을 만듭니다. 반응 형 데이터를 생성하고 동일한 데이터를 기반으로 v-model을 반복하려면이. $ set() 또는 Vue.set을 사용하십시오. –