computed
свойство emailObjects
emailObjects() {
return this.emails.map(email => ({
email,
isActive: email.includes(this.search),
});
},
т.е. тут вместо массива просто-email'ов делается массив объектов, где и email и свойство isActive, которое для данного адреса означает, включает он искомое или нет. [
['text', 'lorem ipsum dolor'],
['copy', 1],
['text', 'sit amet'],
['copy', 2],
]
если я правильно понял, что каждый из плейсхолдеров копирует значение после вертикальной черты – первый копирует 1, второй 2.<template v-for="item in items">
<component :is="text" v-if="item[0] === 'text'">{ item[1] }</component>
<component :is="copy" v-if="item[0] === 'copy'" :value="item[1]" />
</template>
this.$emit('paginate',page);
- <BasePagination v-model="page" :count="countProducts" :car="car"></BasePagination>
+ <BasePagination @paginate="paginate" :count="countProducts" :car="car"></BasePagination>
и добавить метод обработчик сего:methods: {
paginate(page) {
this.page = page;
},
},
isDone
(true / false).import(moduleName)
. Но у этого способа главный недостаток: WebPack соберёт в отдельный чанк все файлы с флагами, и бандл будет тяжеловат.import ru from "svg-country-flags/svg/ru.svg";
import ua from "svg-country-flags/svg/ua.svg";
// ...
// и там же экспорты:
export ru;
export ua;
// ...
import { ru, ua } from './mySuperModule';
И Webpack разберётся и включит в бандл только нужное.<div v-for="messages in message">{{ messages.name }}</div>
computed: {
thirdName() {
if (this.messages.length >= 3) {
return this.messages[2].name;
}
}
},
и показывайте его, когда не пустое: <div v-if="thirdName">Имя: {{ thirdName }}</div>
const DTF = new Intl.DateTimeFormat('ru-RU');
export default {
name: "App",
data() {
return {
dateRange: { start: new Date(), end: new Date() },
};
},
computed: {
display_value() {
return [this.dateRange.start, this.dateRange.end].map(DTF.format).join(" - ");
}
},
};
:value
этот display_value
.{{ }}
теги не пройдут. Поэтому надо использовать свойство v-html:<div class="textmessage" v-html="123<br>321"></div>
<div class="textmessage" v-html="myproperty"></div>
JSdata() {
return {
myproperty: "123<br>321",
};
},
// или вычисляемое свойство
computed: {
myproperty() {
return "123<br>321";
}
},
<!-- template компонента -->
<button @click="this.$emit('buttoned')">не нажимать</button>
<!-- template страницы -->
<Component1 v-on:buttoned="triggerComponents" />
<!-- надо написать метод triggerComponents(), который поменяет данным true/false -->
oneActive, twoActive
не в data
, а в state глобально доступного store
. По кнопкам из компонентов запускать мутации.