У меня есть форма редактирования, и мне нужно, чтобы выбранные параметры из базы данных были выбраны по умолчанию при загрузке страницы.
HTML
<vs-select
:key = "tags.length"
filter
:label = "$t('posts.tags')"
v-model = "form.tags"
multiple
state = "success"
>
<vs-option
v-for = "tag in tags"
:key = "tag.id"
:label = "tag.name"
:value = "tag.id"
>
{{ tag.name }}
</vs-option>
</vs-select>
Script
data() {
return {
tags: [], // all tags
form: {
tags: [], // post tags
},
};
},
mounted() {
this.fetchPost(); // get post data including it's tags
this.fetchTags(); // get all tags
},
methods: {
fetchPost() {
axios
.get("/api/admin/posts/" + this.$route.params.id, {
headers: {
Authorization: localStorage.getItem("access_token"),
},
})
.then((response) => {
//....
this.form.tags = response.data.data.tags;
})
.catch(function (error) {
console.info("error", error);
});
},
fetchTags() {
axios
.get("/api/admin/tags", {
headers: {
Authorization: localStorage.getItem("access_token"),
},
})
.then((response) => {
this.tags = response.data.data;
})
.catch(function (error) {
console.info("error", error);
});
},
},
Есть идеи?
нет, я думаю, это может быть связано с идентификаторами этих тегов
не могли бы вы вывести this.form.tags
после this.form.tags = response.data.data.tags;
?
этот response.data.data.tags;
представляет собой массив, в каждой строке которого есть id
Мне нужно установить эти идентификаторы на мои this.form.tags
Я изменил свой код получения на следующую строку, и теперь он работает
this.form.tags = response.data.data.tags.map((x) => x.id);
this.form.tags = response.data.data.tags;
не справляется?