@focus="disabled = true"
@blur="disabled = false"
@mousedown="disabled = !disabled"
formMeta: [
{ type: '...', props: { ... } },
{ type: '...', props: { ... } },
....
],
<div v-for="{ type, props } in formMeta" class="form-item">
<component :is="type" v-bind="props"></component>
</div>
<component :is="item.type" :data="item.data"></component>
я меняю другие данные
this.type === 'columns'
? this.items.slice(1).map(n => ({ ...n }))
: []
нужно при клике на беседу отображать все сообщения и нужную информацию
Можно ли как-то заставить Vue заменять весь контент?
Немного недопонял, можешь продемонстрировать как это задать?
data: () => ({
devices: [],
}),
this.devices = Object.entries(res.data).map(([ id, n ]) => ({ ...n, id }));
<ul>
<li v-for="d in devices" :key="d.id">
...
Предполагается, что когда пользователь нажмет на фильтр, у меня вызовется функция setRouter...
.push(item)
на .push(+item)
(или .push(Number(item))
, или .push(parseInt(item))
). Соответственно, надо сделать числом и search - для этого достаточно добавить соответствующий модификатор v-model..sort()
на .sort((a, b) => a - b)
.computed: {
array() {
return this.info
.split(';')
.map(n => parseInt(n))
.filter(n => !Number.isNaN(n))
.sort((a, b) => a - b);
},
},
Пытался разными способами <...> что то явно не так
v-model="$store.state.registrations.user_email"
user_email: {
get() {
return this.$store.state.registrations.user_email;
},
set(val) {
this.$store.commit('update_user_email', val);
},
},
v-model
всегда будет разный
{ имя_свойства: значение }
и с помощью Object.assign
закидывать его в объект в стейте - так за один вызов мутации можно будет обновлять несколько свойств). Я так понял, вы предлагаете код, который находится в функции setMarkers() перенести в initializeYandexMap(), я прав?
Элемент - представленный в примере - это FileInput (кликать нужно на него, что бы вызвать диалог выбора файлов)
computed: {
groupedPosts() {
return this.posts.reduce((acc, n) => {
(acc[n.category] = acc[n.category] || []).push(n);
return acc;
}, {});
},
},
При нажатии на название категории хочу выводить посты и соответствующего массива.
categories() {
return Object.keys(this.groupedPosts);
},
data: () => ({
activeCategory: null,
...
<button
v-for="n in categories"
v-text="n"
:class="{ active: n === activeCategory }"
@click="activeCategory = n"
></button>
<div v-if="activeCategory">
<div v-for="n in groupedPosts[activeCategory]" class="post">
...
data: () => ({
items: [...Array(5).keys()],
}),
methods: {
move(index, step) {
const items = [...this.items];
const newIndex = Math.min(items.length - 1, Math.max(0, index + step));
[ items[index], items[newIndex] ] = [ items[newIndex], items[index] ];
this.items = items;
},
// или
move(index, step) {
const { items } = this;
const newIndex = Math.min(items.length - 1, Math.max(0, index + step));
items.splice(index, 1, items.splice(newIndex, 1, items[index])[0]);
},
// или
move(index, step) {
const newIndex = Math.min(this.items.length - 1, Math.max(0, index + step));
if (index !== newIndex) {
const val = this.items[index];
this.$set(this.items, index, this.items[newIndex]);
this.$set(this.items, newIndex, val);
}
},
},
<div v-for="(n, i) in items">
<input v-model="items[i]">
<button @click="move(i, -1)">вверх</button>
<button @click="move(i, +1)">вниз</button>
</div>