row.toggleDetails в качестве обработчика клика, можно завернуть его в метод, который будет принимать row и проверять наличие дополнительной информации, инициируя её подгрузку в случае отсутствия. Например (вместо запроса setTimeout, но думаю, что суть ясна).
model: {
prop: 'checked',
},
props: {
value: [ String, Number ],
checked: [ Boolean, Array ],
label: String,
disabled: Boolean,
},
computed: {
model: {
get() {
return this.checked;
},
set(val) {
this.$emit('input', val);
},
},
},<label>
<input
type="checkbox"
v-model="model"
:value="value"
:disabled="disabled"
/>
{{ label }}
</label>
animated: false на animated: Array(6).fill(false).<div
v-for="n in animated"
:class="{ animated: n }"
...this.$refs.animate.forEach((n, i) => new Waypoint.Inview({
element: n,
entered: () => this.$set(this.animated, i, true),
exited: () => this.$set(this.animated, i, false),
}));
$('.slider').slider('values', [ thisfrom, thisto ]);
const colors = [ 'red', 'orange', 'yellow', 'green', 'aqua', 'blue', 'magenta' ];let index = -1;+ 1 и меняете цвет background'а:hoverEl.addEventListener('mouseenter', () => {
index = (index + 1) % colors.length;
colorEl.style.backgroundColor = colors[index];
});
const data = Array
.from(document.querySelectorAll('.js-input input'))
.reduce((acc, n) => {
const keys = n.name.match(/(?<=\[)\w+(?=\])/g);
const key = keys.pop();
keys.reduce((p, c) => p[c] = p[c] || {}, acc)[key] = n.value;
return acc;
}, {});
state: {
wishlistIds: [],
...plugins: [
createPersistedState({
paths: [ 'wishlistIds' ],
}),
...getters: {
wishlist: state => state.games.filter(n => state.wishlistIds.includes(n.id)),
...mutations: {
addGame(state, gameId) {
if (!state.wishlistIds.includes(gameId)) {
state.wishlistIds.push(gameId);
}
},
removeGame(state, gameId) {
const index = state.wishlistIds.indexOf(gameId);
if (index !== -1) {
state.wishlistIds.splice(index, 1);
}
},
...computed: {
liked: {
get() {
return this.$store.state.wishlistIds.includes(this.game.id);
},
set(val) {
this.$store.commit(val ? 'addGame' : 'removeGame', this.game.id);
},
},
...<button @click="liked = !liked" :class="{ liked }" class="like"></button>
import chartist from 'chartist';VueChartist.Interpolation.simple()chartist.Interpolation.simple()
т.к. объектов много (~2000) при очистке фильтра страница подлагивает
const videos = document.querySelectorAll('video');
const onPlay = e => videos.forEach(n => n !== e.target && n.pause());
videos.forEach(n => n.addEventListener('play', onPlay));
const $elements = $('здесь селектор ваших элементов');
const updateElement = i => $elements.eq(i).addClass('здесь ваш класс');
const delay = 500;$elements.each(i => setTimeout(updateElement, (i + 1) * delay, i));(function next(i) {
if (i < $elements.length) {
setTimeout(() => {
updateElement(i);
next(-~i);
}, delay);
}
})(0);const intervalID = setInterval(
i => updateElement(++i[0]).length || clearInterval(intervalID),
delay,
[ -1 ]
);
каждый пункт из этого списка должен выводиться на конкретной странице, например, в виде заголовка
<h1>{{ $route.meta.title }}</h1>
echo implode('<br>', array_map(function($n, $i) use(&$result) {
return
"Книгу ".$result['BOOKS'][$i]['bookName'].
" написали для машины ".$n['name']." в ".$n['year'].
" году, можно заказать по электронной почте ".$result['BOOKS'][$i]['authorEmail'];
}, $result['CARS'], array_keys($result['BOOKS'])));