<template>
<label>
<input
type="checkbox"
@change="debouncedCheckboxChange"
v-model="form.c1"
/>
Check 1
</label>
<label>
<input
type="checkbox"
@change="debouncedCheckboxChange"
v-model="form.c2"
/>
Check 2
</label>
<pre>{{ form }}</pre>
</template>
<script>
const debounce = (handle, duration = 0) => {
let timeout = null;
return function (...args) {
clearTimeout(timeout);
timeout = setTimeout(() => handle.apply(this, args), duration);
};
};
export default {
name: 'App',
data() {
return {
form: {}
};
},
methods: {
checkboxChange() {
this.form.date = Date.now();
}
},
created() {
this.debouncedCheckboxChange = debounce(this.checkboxChange, 1500);
}
};
</script>
mix-blend-mode: overlay
. Возможно существует более простое/красивое/элегантное решение, но я сейчас не придумаю такое. Можно сделать намного проще, если не будет следующего условия:чтобы линии начинались с конца второй строки и примыкали ко второй строке
const formData = new FormData();
for (const key in obj) {
formData.append(key, obj[key]);
}
...
xhr.send(formData);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
fetch
. const url = new URL(location.href)
url.searchParams.set('session', '1')
history.pushState(null, document.title, url.toString())
const params = new URLSearchParams(location.search);
params.set('session', '1');
location.search = params.toString();
let { src, dest } = require('gulp'),
gulp = require('gulp'),
- browsersync = require('browser-sync').create;
+ browsersync = require('browser-sync').create();
a == 1 && a == 2 && a == 3 // true
true
, и если не знать как работает ==
, можно было бы подумать, что это некоторое шаманство. Суть в том, что ==
преобразует типы (а также вызывает valueOf
). Зная правило с valueOf
, переменная a
была равна следующему:const a = {
value: 1,
valueOf() {
return this.value++;
}
};
===
(ну или почти всегда). $(window).scroll(function () {
let ratio = $(document).scrollTop() / (($(document).height() - $(window).height()) / 100);
+ $("#progressbar").text(ratio + "%");
$("#progressbar").width(ratio + "%");
});
const comparator = (a, b) => {
if (typeof a === 'number' && typeof b === 'number') {
return a - b;
} else {
return a.toString().localeCompare(b.toString());
}
};
const isSorted = array => {
const count = array.length;
return array.every((current, index) => {
if (index + 1 < count) {
const next = array[index + 1];
return comparator(current, next) <= 0;
} else {
return true;
}
});
};