Показать сообщение отдельно
  #1 (permalink)  
Старый 31.01.2021, 18:05
Кандидат Javascript-наук
Отправить личное сообщение для fori Посмотреть профиль Найти все сообщения от fori
 
Регистрация: 27.01.2021
Сообщений: 117

Vue.directive(el.addEventListener) + v-model
Здравствуйте, я столкнулся с проблемой, что в случае одновременного использования директивы вешающей слушатель и v-model — Vue.js при каждом изменении переменной заново ставит слушатель.
Пример
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<input id="vue" type="text" v-model="variable" v-my>
<script>
	Vue.directive('my', function (el) {
		el.addEventListener('input', event => {
		alert(el.value);
		}, true);
	});
	var vue = new Vue({
		el: '#vue',
		data: {
			variable: "",
		}
})
</script>

алерт должен выводится один раз, но изза того что vue ставит много слушателей со временем алертов много. Для решения можно использовать v-once, но в таком случае перестает обновлятся переменная. Можно ли поставить какой-то атрибут на v-my чтоб именно ета директива запускалась всего один раз, а переменная обновлялась...
Ответить с цитированием