items.slice...
надо было унести в computed):<div v-for="item in items.slice((page - 1) * perPage, page * perPage)">
{{ item }}
</div>
computed: {
numPages() {
return Math.ceil(this.items.length / this.perPage);
},
},
methods: {
next(change) {
this.page = Math.max(1, Math.min(this.numPages, this.page + change));
},
},
<button @click="next(-1)" :disabled="page <= 1">prev</button>
<button @click="next(+1)" :disabled="page >= numPages">next</button>
{ path: '/city', component: City, props: () => ({ cityid: app.cityid }) }
<router-view :cityid="cityid"></router-view>
watch: {
town_id(val) {
// ну а тут ваш запрос
}
}
resultGenes() {
return this.filteredResultGenes.filter(elem => {
return elem.snps.every(n => n.snpgroup.every(m => m.group_id === 1));
});
}
есть похожая задача, только мне необходимо сравнить два значения и если true то отрисовать блок. Every, как я понял возвращает лишь true или false. А есть какой-то метод, чтобы можно было в директиве v-if в массиве пройтись по всем объектам этого массива? ну т.е.
я хочу, чтобы сработала конструкция: v-if="type.id == date.activities.type_id " вот только activities может либо вообще не быть, либо быть пустым либо несколько их может быть.
v-if
. Сделайте вычисляемое свойство, которое будет представлять данные, соответствующие условию, и выводите их все. .faq-content__row
оформляете в виде отдельного компонента, у которого будут параметры - заголовок и описание, и свойство, отвечающее за показ описания:props: [ 'title', 'desc' ],
data: () => ({
showDesc: false,
}),
<div class="faq-content__row">
<header class="faq-content__title">
<h2 class="faq-content__h2">{{ title }}</h2>
<div class="faq-content__button" @click="showDesc = !showDesc">+</div>
</header>
<p
:class="{
'faq-content__description': true,
'faq-content__description--active': showDesc,
}"
>{{ desc }}</p>
</div>
v-for
, будут создаваться экземпляры компонента:data: () => ({
items: [
{ title: '...', desc: '...' },
{ title: '...', desc: '...' },
...
],
}),
<div class="wrapper">
<v-faq
v-for="item in items"
v-bind="item"
></v-faq>
</div>
<div>{{ someStringValue | limit(10) }}</div>
filters: {
limit(str, limit) {
return str.length > limit ? str.slice(0, limit) + '...' : str;
}
}
<div v-html="sup(someStringValue)"></div>
methods: {
sup(val) {
return val.replace(/\.(\d+)/g, '<sup>$1</sup>');
}
}
правильно ли использовать общий объект data
<clients-list :rows="clients" :headers="clientsTableHeaders"></clients-list>
Vue.component('clients-list', {
props: [ 'rows', 'headers' ],
...
});
clientsTableHeader.email.show <...> как это можно использовать при обработке списка клиентов
computed: {
activeHeaders() {
return this.headers.filter(n => n.show);
},
},
<thead>
<tr>
<th v-for="header in activeHeaders">{{ header.title }}</th>
</tr>
</thead>
<tbody>
<tr v-for="row in rows">
<td v-for="header in activeHeaders">{{ row[header.name] }}</td>
</tr>
</tbody>
получаю ошибку: this.currentGen.snps.genotypes is undefined
v-model
компонентом f-select
- он должен принимать параметр value
, который будет определять значение элемента <select>
внутри компонента, а при выборе пользователем какого-то пункта выбранное значение должно отправляться родителю:<select
:value="value"
@input="$emit('input', $event.target.value)"
...
country
, и свяжем его c экземпляром компонента, который ответственен за выбор страны:<f-select
v-model="country"
...
disabled
поставить в зависимость от выбора страны:<f-select
:disabled="!country"
...
data: () => ({
items: [ '...', '...', ... ],
}),
<a v-for="(n, i) in items" :href="`#item_${i}`">{{ n }}</a>
<ul>
<li v-for="(n, i) in items" :id="`item_${i}`">{{ n }}</li>
</ul>
data: () => ({
showChars: 0,
...
}),
computed: {
typedString() {
return this.string.slice(0, this.showChars);
},
},
<h2>{{ typedString }}</h2>
mounted() {
const intervalID = setInterval(() => {
if (++this.showChars === this.string.length) {
clearInterval(intervalID);
}
}, 50);
},
data: () => ({
activeComponent: null,
components: [
{ name: 'component-1', label: '#1' },
{ name: 'component-2', label: 'а я второй' },
{ name: 'component-3', label: 'третьим буду' },
],
}),
v-model
:<select v-model="activeComponent">
<option v-for="n in components" :value="n.name">{{ n.label }}</option>
</select>
<component v-if="activeComponent" :is="activeComponent"></component>