data: () => ({
items: [
{ name: 'PHOTOSHOP', val: 88, color: 'red' },
{ name: 'ILLUSTRATOR', val: 92, color: 'green' },
{ name: 'SKETCH', val: 90, color: 'orange' },
{ name: 'AFFTER EFFECTS', val: 98, color: 'blue' },
],
}),
border-bottom
например) у элемента списка:methods: {
liText: item => `${item.name} ${item.val}%`,
liStyle: item => ({
'border-bottom': `3px solid ${item.color}`,
width: `${item.val}%`,
}),
},
<ul>
<li
v-for="n in items"
v-text="liText(n)"
:style="liStyle(n)"
></li>
</ul>
[...new Set(arr)]
.Object.values(arr.reduce((acc, n) => (acc[n] = n, acc), {}))
// или
Array.from(new Map(arr.map(n => [ n, n ])).values())
// или
arr.filter(function(n) {
return !(this[n] = this.hasOwnProperty(n));
}, {})
// или
arr.filter(((picked, n) => !picked.set(n, picked.has(n)).get(n)).bind(null, new Map))
// или
arr.filter((n, i, a) => i === a.indexOf(n))
// или
arr.reduce((acc, n) => (acc.includes(n) || acc.push(n), acc), [])
data: () => ({
show: false,
items: [ 'в сети', 'занят', 'отсутствую', 'в самолете', 'в пути' ],
status: 'статус',
}),
methods: {
selectStatus(status) {
this.status = status;
this.show = false;
},
},
<div
v-text="status"
@click="show = !show"
></div>
<ul v-show="show">
<li
v-for="n in items"
v-text="n"
@click="selectStatus(n)"
></li>
</ul>
{ имя_диалога: состояние }
. Тогда при обновлении состояния диалогов не будет необходимости обращаться к ним поимённо:mutations: {
dialogShow: (state, payload) => Object.assign(state.modals, payload),
},
modals() {
return new Proxy(this.$store.state.modals, {
set: (target, prop, value) => {
this.$store.commit('dialogShow', { [prop]: value });
return true;
},
});
},
<el-button @click="modals.dialogSignIn = true">sign in</el-button>
<el-dialog :visible="modals.dialogSignIn" @close="modals.dialogSignIn = false">
<span slot="footer" class="dialog-footer">
<el-button @click="modals.dialogSignIn = false">Закрыть</el-button>
</span>
</el-dialog>
То есть если пользователь кликнул три раза по первой кнопке, то дочерний компонент значение "4" вывел только один раз.
В Network указывается не jpeg, а text/html
mounted() {
const img = new Image();
img.onload = () => this.$refs.canvas.getContext('2d').drawImage(img, 0, 0);
img.src = '...';
},
const input = document.querySelector('#textLink');
const buttonSelector = '.link';
document.addEventListener('click', e => {
const button = e.target.closest(buttonSelector);
if (button) {
input.value = button.innerText;
}
});
document.querySelectorAll(buttonSelector).forEach(function(n) {
n.addEventListener('click', this);
}, e => input.value = e.currentTarget.textContent);
Не работает
есть вариант решения?
Я хочу что бы у инпутов focus срабатывал только по клику
arr.map(n => ({
...n,
items: n.items.filter(m => m.checked).map(m => ({ ...m })),
}))
возможно, computed надо высчитывать?
computed: {
checkedArr() {
return this.arr.map(/* ... */);
},
},
const data = [
{ title: 'a', value: 0 },
{ title: 'b', value: 100 },
{ title: 'c', value: 200 },
];
d3.select('#svg')
.selectAll('g')
.data(data)
.enter()
.append('g')
.append('rect')
.attr('x', d => d.value)
.attr('y', d => d.value)
.attr('width', 50)
.attr('height', 50)
.attr('fill', '#F0A');
Не вижу явного удаления из дом дерева.
.js-select-tabs-head
, неужели этого не видно? Или вы думаете, что там другой элемент, копия? Это не так - можете получить элемент до вызова html, после, сравнить их, увидите, что это один и тот же элемент.$head.html($text.filter('.is-active').clone())
.