В вашем коде вы вызываете onSelect
и пытаетесь изменить аргумент option
этой функции внутри функции:
option.checked = true;
Это влияет только на локальную переменную option
(аргумент функции),И не влияет на объекты в массиве options
в data
экземпляра Vue, объекты, связанные с флажками. Вот почему ничего не происходит, когда вы нажимаете на опцию в списке.
Чтобы исправить это, найдите соответствующий элемент в массиве options
и измените его:
let index = this.options.findIndex(item => item.library==option.library);
this.options[index].checked = true;
Вот фрагмент кодас исправлением:
new Vue({
components: {
Multiselect: window.VueMultiselect.default
},
data: {
value: [],
options: [
{ language: 'JavaScript', library: 'Vue.js', checked: false },
{ language: 'JavaScript', library: 'Vue-Multiselect', checked: false },
{ language: 'JavaScript', library: 'Vuelidate', checked: false }
]
},
methods: {
customLabel (option) {
return `${option.library} - ${option.language}`
},
onSelect (option) {
console.log("Added");
let index = this.options.findIndex(item => item.library==option.library);
this.options[index].checked = true;
console.log(option.library + " Clicked!! " + option.checked);
},
onRemove (option) {
console.log("Removed");
let index = this.options.findIndex(item => item.library==option.library);
this.options[index].checked = false;
console.log(option.library + " Removed!! " + option.checked);
}
}
}).$mount('#app')
* {
font-family: 'Lato', 'Avenir', sans-serif;
}
.checkbox-label {
display: block;
}
.test {
position: absolute;
right: 1vw;
}
{{ scope.option.library }}
{{ value }}