Я пытаюсь получить измененное значение vuetify v-select
с помощью $emit
, но это не работает.Я разделил компоненты, применяя шаблон атомарного дизайна (атомы (дочерний компонент и не связываться с хранилищем), организмы (родительский компонент)) и хранилища vuex.Я думаю, что с данными $ emit все в порядке, но после процесса ничего не работает.
Это для нового приложения для страницы управления с использованием vue, vuex, vuetify,
атомарного проектирования, соединяющегося с сервером API.
Компоненты
дочерний компонент - в папке атомов
<template>
<v-select
:items="list"
:label="label"
v-model="selected"
item-value="id"
item-text="name"
return-object
@change="changeSelected"
></v-select>
</template>
<script>
export default {
props: ["list", "label", "defaultSelected"],
data() {
return {
selected: this.defaultSelected
};
},
methods: {
changeSelected(newValue) {
console.log(newValue); // display changed new data
this.$emit("changeSelected", newValue);
}
}
};
</script>
родительский компонент - в папке организмов
<template>
<v-select-child
:select-label="label"
:select-list="list"
:default-selected="selected"
@change-selected="changeSelected" // problem issue?
>
</v-select-child>
</template>
<script>
import { mapState } from "vuex";
export default {
data() {
...
},
computed: {
...mapState({
list: state => state.list
})
},
methods: {
changeSelected() {
console.log("changeSelected"); // doesn't work
this.$store.dispatch("setSelected", { payload: this.selected });
}
}
};
</script>
магазины Vuex
index.js
export default new Vuex.Store({
modules: {
xxx
},
state: {
list: [
{
name: "aaaaa",
id: "001"
},
{
name: "bbbbb",
id: "002"
}
]
},
getters: {},
mutations: {},
actions: {}
});
xxx.js
export default {
selected: { id: "001" }
},
getters: {
//
},
mutations: {
updateSelected(state, payload) {
console.log("payload"); // doesn't work
console.log(payload);
state.selected = payload;
console.log(state.selected);
}
},
actions: {
setSelected({ commit }, payload) {
console.log("Action"); // doesn't work
commit("updateSelected", payload);
}
}
};
Itне печатает консольный журнал после функции changeSelected
.