Есть следующая разметка:
<p class="row" @dblclick="changingPrice" >
<span v-if="isChangingPrice">
<input type="text" v-model="currentPrice" @change="changePrice" @keyup.enter="changingPrice">
</span>
<span v-else>{{currentPrice}} руб</span>
</p>
По умолчанию показывается цена товара. При двойном клике инициализируется changingPrice
, который меняет переменную isChangingPrice = !isChangingPrice
.
Таким образом, после двойного клика, я получаю возможность редактирования данного поля.
Каким образом я могу менять переменную isChangingPrice
по клику ВНЕ input'a?
Можно использовать кастомную директиву:
Vue.directive('click-outside', {
bind(el, binding) {
el.addEventListener('click', e => e.stopPropagation());
document.body.addEventListener('click', binding.value);
},
unbind(el, binding) {
document.body.removeEventListener('click', binding.value);
}
});
Использование:
<div v-click-outside="close">
Только в этом примере значением может быть только функция.
Нужно использовать v-model.lazy="currentPrice"
. lazy
применяет изменения только после клика вне элемента.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
если создавать очень большое дерево, то ИМХО присвоение(=) в innerHTML быстрее чем создание дерева с помощью JSа вот как быть с наращиванием (+=) ?
Есть массив со значениями, необходимо обойти dom дерево и заполнить содержимое элементов c классом child-elem элементами из массиваПолучается...