Hi i don't know whether what i'm trying to achieve is possible or not with vue for a particular component by changing its data and loading automatically
Below is my expection(tried in jquery)
var data = {country:{type:'dropdown',values:['india','usa']},money:{type:'input',placeholder:'enter amount'},india:['Bengaluru'],usa:['Silicon Valley']}
function getDropTemplate(dropDownList){
var dropDownStr = '';
for(var i = 0; i < dropDownList.length; i++){
dropDownStr += `<option value="${dropDownList[i]}">${dropDownList[i]}</option>`
}
return `<select class="mainCountry">${dropDownStr}</select>`;
}
function getInputTemplate(inputObj){
return `<input type="text" placeholder="${inputObj.placeholder}"/>`
}
$(function(){
$('#dropdown').on('change',function(){
var value = $(this).val(), template = '';
if(data[value].type == 'dropdown'){
template += getDropTemplate(data[value].values)
}else{
template += getInputTemplate(data[value])
}
$('#selectedResults').html(template);
});
$(document).on('change','.mainCountry',function(){
var result = data[$(this).val()]
$('#subResults').html(getDropTemplate(result));
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="dropdown">
<option value="">--select--</option>
<option value="money">Money</option>
<option value="country">Country</option>
</select>
<div id="selectedResults">
</div>
<div id="subResults">
</div>
From above snippet you can observe that by selecting country -> india -> Bengaluru
or country -> usa -> Silicon Valley
I want to replicate the same thing with vue-multiselect
below is what i have tried in vue
var app = new Vue({
el: '#app',
components: { Multiselect: window.VueMultiselect.default },
data () {
return {
value: [],
//data:{country:{type:'dropdown',values:['india','usa']},money:{type:'input',placeholder:'enter amount'},india:['Bengaluru'],usa:['Silicon Valley']}
options:[{name:'money'},{name:'country'}]
}
}
})
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-multiselect@2.1.0"></script>
<link rel="stylesheet" href="https://unpkg.com/vue-multiselect@2.1.0/dist/vue-multiselect.min.css">
<script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
<div id="app">
<multiselect
v-model="value"
track-by="name"
:options="options"
label="name"
:multiple="false"
:taggable="false"
></multiselect>
</div>
from How to have dynamic multiple dropdown with vue-multiselect
No comments:
Post a Comment