h1 {
font-size: var(--h1-font-size);
}
<input v-model="fontSize" type="range">
<h1>hello, world!!</h1>
data: () => ({
fontSize: 24,
}),
mounted() {
this.$watch(
'fontSize',
val => this.$el.style.setProperty('--h1-font-size', `${val}px`),
{ immediate: true }
);
},
computed: mapState({
products: state => state.product.all.map(n => ({
...n,
isOrdered: state.order.all.some(m => m.id === n.id),
})),
}),
<b-button :disabled="product.isOrdered"
.<div v-if="product.isOrdered"
.computed: {
isOrdered() {
return Object.fromEntries(this.$store.state.order.all.map(n => [ n.id, true ]));
},
},
product.isOrdered
из предыдущего варианта, будет isOrdered[product.id]
.v-model
.props: {
value: Number,
...
computed: {
item() {
return this.items[this.value];
},
...
<transition name="slide-fade" mode="out-in">
<div class="content" :key="value">
<h2>{{ item.title }}</h2>
<p>{{ item.text }}</p>
</div>
</transition>
methods: {
next(change) {
const len = this.items.length;
this.$emit('input', (this.value + change + len) % len);
},
...
<button @click="next(-1)">Prev</button>
<button @click="next(+1)">Next</button>
data: () => ({
active: 1,
...
<v-slider
v-model="active"
...
data: () => ({
items: [ 'hello, world!!', 'fuck the world', 'fuck everything' ],
focused: null,
}),
<div v-for="(n, i) in items">
<input @focus="focused = i" @blur="focused = null">
<span v-show="focused === i" v-text="n"></span>
</div>
('#app') new Vue({ router, store, render: h => h(App) }).$mount
data: () => ({
items: [
{ show: false, ... },
{ show: false, ... },
...
],
}),
computed: {
showItems() {
return this.items.filter(n => n.show);
},
},
mounted() {
this.items.forEach((n, i) => setTimeout(() => n.show = true, i * 1000));
},
<transition-group name="fade">
<div v-for="n in showItems" :key="n.id">{{ n }}</div>
</transition-group>
через Vuex я уже сделал, теперь хочу потренироваться на шине событий
в чём моя ошибка понять не могу
Весь текст, как я понимаю, находится в js-файле.
<tr>
<tr>
...
<tr>
<tr v-for="n in data">
loadData() {
fetch(...).then(r => r.json()).then(r => this.data = r);
},