:root {
--aside-width: 200px; /* По умолчанию */
}
.aside {
width: var(--aside-width);
}
.main {
margin-right: var(--aside-width);
}
document.documentElement.style.setProperty('--aside-width', '200px'); // show
document.documentElement.style.setProperty('--aside-width', '0'); // hide
Каким образом здесь утроена структура бд?
Какой тип имеют поля address, company?
Как мне их записать в бд
получать их в таком виде
v-if
/v-else
- один для показа форматированного значения, другой для редактирования:<input v-if="edit" v-model="price" @blur="edit = false">
<input v-else :value="formatPrice(price)" @focus="edit = true">
data: () => ({
edit: false,
price: 666,
}),
methods: {
formatPrice: price => `${(+price).toLocaleString()} руб.`,
},
data: () => ({
items: [ ... ],
filters: [
item => item.status === 'hello, world!!',
item => item.price > 666,
item => item.text.includes('fuck the world'),
],
}),
computed: {
filteredItems() {
return this.filters.reduce((items, filterFn) => items.filter(filterFn), this.items);
},
},
isDone
(true / false).this
внутри function
зависит от контекста вызова этой function
.onAuthStateChanged
- вызывается переданная ему функция-обработчик, которой устанавливается какой-то this
(или не устанавливается, и тогда он по умолчанию window
или, в строгом режиме, undefined
). И этот this
точно никак не связан с текущим this
Vue, потому что тот никаким образом не передан при вызове, и, соответственно onAuthStateChanged
о нём ничего не знает.(async function(user) { ... }).bind(this)
чтобы жёстко привязать эту функцию к this
.vm.g = 5;
, т.к. таким образом конкретный this
сохранён в переменную и не меняется в зависимости от контекста вызова.async (user) => { ... }
, её механика работы по сути осуществляет неявный bind
.bind
всех методов к this:onAuthStateChanged(this.onAuthStateChanged)
methods: {
onAuthStateChanged: async function (user) { ... }
}
<a href="https://toster.ru" onclick="return false">link</a>
a.disabled {
pointer-events: none;
}
<a href="https://toster.ru" class="disabled">link</a>
methods: {
toggleElement(id) {
const index = this.selectedElArr.indexOf(id);
if (index !== -1) {
this.selectedElArr.splice(index, 1);
} else {
this.selectedElArr.push(id);
}
},
...
@click="toggleElement(data.id)"
showElement
.selectedElArr = [2, 1]
, потом кликаете по 3-ему, чтобы его закрыть и метод захочет удалить selectedElArr[2]
, а такого элемента даже нет. Ну и т.д.selectedElArr[index]=true
и удалять selectedElArr[index]=false
, если опираться на порядок div в списке. Ну и проверять потом так жеif (!!this.selectedElArr[index]) {
this.selectedElArr[index] = false;
} else {
this.selectedElArr[index] = true;
}}
this.selectedElArr[index] = !this.selectedElArr[index];
data.isOpened
(isActive, isVisible и т.д.) и уже отталкивался от него, это мне кажется надежнее. <div class="lang-changer" @click="toggle = !toggle">
<div :class="toggle ? 'lang-tog': 'lang'">
<span :class="toggle ? 'a': 'b'">РУ</span>
<span :class="toggle ? 'x': 'y'"></span>
</div>
</div>
data(){
return {
toggle: false;
}
}
const myval = '+1';
const arr = Object.keys(FList) // берем ключи из пар ключ-значение
.filter(key=>key===myval); // ... и фильтруем по совпадению с нашей переменной myval
for(let item of arr){
console.log(FList[item]) // вытаскиваем обьекты по ключам, полученным ранее
}
const myval = '+1';
for(const [key,value] of Object.entries(FList)){
if(key===myval){
console.log(value)
}
}
if (question === 1||3)
if (question === 1|| question === 3)
if ([1,3].indexOf(question) > -1)