:model="MainForm"
должно быть :model="MainForm.dynamicValidateForm"
.:rules="rules"
замените на :rules="rules.value"
.а могу я сослаться:model="MainForm"
в главной форме, а в props передатьdynamicValidateForm
:prop="`dynamicValidateForm.domains.${index}.value`"
v-if
/ v-else
). Как-то так:<input v-if="input" v-model="name" @keypress.enter="onEnter">
<span v-else v-text="name" @click="onClick"></span>
data: () => ({
name: '',
input: true,
}),
methods: {
onEnter() {
if (this.name) {
this.input = false;
}
},
onClick() {
this.input = true;
},
},
const extend = (target, source) => Object
.entries(source instanceof Object ? source : {})
.reduce((acc, [ k, v ]) => {
acc[k] = v instanceof Object ? extend(acc[k], v) : k in acc ? acc[k] : v;
return acc;
}, target instanceof Object ? target : {});
extend(patient, donor);
А как это сделать из компонента, а не из корневого экземпляра VUE?
Наверное нужно создать массив, куда помещать id продукта и данные с инпутов...
<input v-model="product.count" name="count" type="text" placeholder="Количество">
<input v-model="product.comment" name="comment" type="text" placeholder="Примечание">
const id = Math.max(0, ...this.collection.map(n => n.id)) + 1;
const onInput = () => $button.prop('disabled', !$inputs.get().every(n => $(n).val()));
const $button = $('селектор кнопки');
const $inputs = $('селектор инпутов').on('input', onInput);
onInput();
const button = document.querySelector('селектор кнопки');
const inputs = [...document.querySelectorAll('селектор инпутов')];
const onInput = () => button.disabled = inputs.some(n => !n.value);
inputs.forEach(n => n.addEventListener('input', onInput));
onInput();
$('#name').on('input', function() {
$('.cell').text(i => this.value[i] || '');
});
document.querySelector('#name').addEventListener('input', e => {
document.querySelectorAll('.cell').forEach((n, i) => {
n.textContent = e.target.value[i] || '';
});
});
arr.map(n => ({
id: n.id.value,
title: n.title.value,
slug: n.slug.value
}))
arr.map(n => Object.entries(n).reduce((acc, [ k, v ]) => (acc[k] = v.value, acc), {}))
arr.map(n => Object.keys(n).reduce((acc, k) => ({ ...acc, [k]: n[k].value }), {}))
arr.map(n => Object.assign({}, ...Object.values(n).map(m => ({ [m.title.toLowerCase()]: m.value }))))
.wrap
:.wrap-active {
transform: translateY(-100%);
}
$('.wrap').on('click', 'a', function(e) {
e.preventDefault();
$(e.delegateTarget).toggleClass('wrap-active');
});
.wrap
добавляем скрытый чекбокс:<input type="checkbox" id="toggle" hidden>
<a href="#">Day</a>
---> <label for="toggle">Day</label>
<a href="#">Night</a>
---> <label for="toggle">Night</label>
.wrap
не при наличии дополнительного класса, а если чекбокс перед ним выставлен:.wrap-active {
---> #toggle:checked + .wrap {
const links = [
'https://youtu.be/fi5LDM9ppuc',
'https://www.youtube.com/embed/fi5LDM9ppuc',
];
const newLinks = links.map(n => `https://www.youtube.com/watch?v=${n.split('/').pop()}`);
methods: {
plainObj(obj) {
return Object.entries(obj).reduce((acc, [ k, v ]) => {
if (v instanceof Object) {
Object.assign(acc, this.plainObj(v));
} else {
acc[k] = v;
}
return acc;
}, {});
}
}
<li v-for="value in plainObj(object)" class="list-group-item">{{ value }}</li>
Vue.component('list-obj', {
template: `
<ul class="list-group">
<li v-for="value in obj" class="list-group-item">
<list-obj v-if="value instanceof Object" :obj="value"></list-obj>
<span v-else>{{ value }}</span>
</li>
</ul>`,
props: [ 'obj' ]
});
<list-obj :obj="object"></list-obj>
state: {
items: [
{ title: '...', liked: false },
{ title: '...', liked: false },
...
mutations: {
toggleLike: (state, item) => item.liked = !item.liked,
...
<li
v-for="n in $store.state.items"
:class="{ liked: n.liked }"
@click="$store.commit('toggleLike', n)"
...
removePost(picId: number) {
this.remove.emit(picId);
}
removePost(picId: number) {
this.collection = this.collection.filter(p => p.id !== picId);
}