@moskwin68

Cоздать компонент Vue и событие внутри него?

Задача: создать компонент с ползунком, меняющим размер шрифта в блоке.
<div id="controls">
 <font-size target="headline"></font-size>
<div>

Мой компонент:
Vue.component('font-size', {
	props: ['target'],
	template: '<div id="controls-item"><input type="range" value="30"></div>'
});
new Vue({ 
	el: '#controls',
})


Как сделать так, чтобы при onchange input'а выполнялась следующая функция:
function fontResize(selector, target) { }

Пытаюсь получить типа:
template: '<div id="controls-item"><input type="range" value="30" onchange="fontResize(this, ' {{ target }} ')"></div>'
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Вариант раз, размер шрифта делаем свойством компонента, ну и v-model + watch:

data: () => ({
  size: ...
}),
watch: {
  size: {
    immediate: true,
    handler(val) {
      fontSize(this.target, val);
    },
  },
},

<input type="range" v-model="size">

Вариант два - слушаем событие input:

methods: {
  onInput(e) {
    fontSize(this.target, e.target.value);
  },
},
mounted() {
  this.$el.querySelector('input').dispatchEvent(new Event('input'));
},

<input type="range" @input="onInput">
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы