поскольку наше приложение — одностраничное, не сконфигурировав соответствующим образом сервер мы заставим пользователей получать ошибку 404, если они перейдут поhttp://oursite.com/user/id
напрямую
<...>
всё, что нужно — единственная "резервная" запись в конфигурации сервера. Если URL не совпадает ни с одним статическим файлом, сервер должен просто отдать index.html, в котором и живёт наше приложение
<div v-for="(row, iRow) in rows" class="board__rows">
<div
v-for="(col, iCol) in columns"
v-text="col + row"
:class="[ [ 'white', 'black' ][(iRow ^ iCol) & 1], 'board__square' ]"
></div>
</div>
Cannot read properties of undefined (reading 'lastname')
async addNewEmployee({ commit }, employee) { await axios .post(`http://127.0.0.1:8000/api/v1/employees/`, { lastname: employee.lastname,
@submit.prevent="addNewEmployee(employee)"
должен быть более лаконичный способ, чем плодить такие переменные
Или это считается нормальной практикой?
app.ifScroll =
ifScroll.value =
. нет примера их использования
<q-select
ref="select"
...
<q-btn
@click="$refs.select.showPopup()"
...
ul
в transition
следует завернуть li
в transition-group
:<transition-group tag="ul" name="fade" class="buttons">
<li
v-if="какое здесь будет условие, предлагаю подумать самостоятельно"
...
props: { user: String }, emits: ["update:someUser"]
- emits: ["update:someUser"]
+ emits: ["update:user"]
- @input="$emit('update:someUser', $event.target.value)"
+ @input="$emit('update:user', $event.target.value)"
data: () => ({
items: [
{ text: '69', tooltip: 'hello, world!!' },
{ text: '187', tooltip: 'fuck the world' },
{ text: '666', tooltip: 'fuck everything' },
],
}),
<div
v-for="n in items"
v-text="n.text"
:data-tooltip="n.tooltip"
class="item"
></div>
.item {
display: inline-flex;
justify-content: center;
align-items: center;
color: white;
background: red;
width: 150px;
height: 50px;
margin: 10px;
position: relative;
}
.item:hover::before {
content: attr(data-tooltip);
display: inline-block;
background: blue;
color: white;
position: absolute;
}
computed: {
filteredWorks() {
const category = this.tabs.find(n => n.id === this.activeTabId)?.category;
return category равна той, что у 'Все работы'
? this.works
: this.works.filter(n => n.category === category);
},
<div class="articles__items articles__items--works">
<img v-for="n in filteredWorks" :key="n.id" :src="n.image">
</div>
tabs: [ { id: '1', name: 'Все работы', category: 'doors' }, { id: '2', name: 'Окна', category: 'windows' }, { id: '3', name: 'Двери', category: 'doors' },
props: { spawns: Boolean
data() { return { play: false, active: false, prepare: false, spawns: {
<div class="hr">
<div class="logo">
<div class="icon">
const flat = (arr, childrenKey = 'children') =>
(arr instanceof Array ? arr : []).reduce((acc, n) => (
acc.push(n, ...flat(n[childrenKey], childrenKey)),
acc
), []);
// или, если нужны копии объектов без ссылок на массивы вложенных объектов:
const flat = (arr, childrenKey = 'children') =>
Array.isArray(arr)
? arr.flatMap(({ [childrenKey]: c, ...n }) => [
n,
...flat(c, childrenKey),
])
: [];
v-for
по его значению:computed: {
users() {
return flat(this.elements);
},
},
<option v-for="n in users" :key="n.id">{{ n.name }}</option>
<gmap-map
ref="map"
...
const bounds = new google.maps.LatLngBounds();
массивКоординатВашихЛокаций.forEach(n => bounds.extend(n));
this.$refs.map.fitBounds(bounds);
не хочу дублировать код в v-slot:fastFilters, но как мне сделать так, чтоб по определенному флагу на фильтрах он появлялся и в fastFilters
<toolbar>
<slot name="fastFilters">
<slot name="filters" v-if="а здесь ваш флаг">
</toolbar>
<div class="filters">
<slot name="filters">
</div>
props: {
modelValue: {
type: String,
default: '',
},
},
emits: [ 'update:modelValue' ],
setup(props, { emit }) {
const value = ref('');
watchEffect(() => value.value = props.modelValue);
return {
value,
onInput: e => emit('update:modelValue', value.value = e.target.value),
};
},
<input :value="value" @input="onInput">