В документации Vue на https://vuejs.org/v2/guide/render-function.html#The-Data-Object-In-Depth есть объяснения для «on» и «nativeOn»:
// Event handlers are nested under `on`, though
// modifiers such as in `v-on:keyup.enter` are not
// supported. You'll have to manually check the
// keyCode in the handler instead.
on: {
click: this.clickHandler
},
// For components only. Allows you to listen to
// native events, rather than events emitted from
// the component using `vm.$emit`.
nativeOn: {
click: this.nativeClickHandler
},
Мы пытаемся прослушать событие «input» из пользовательского компонента, который мы создали. Мы заметили, что событие не было обнаружено в свойстве on, поэтому мы попробовали nativeOn и с удивлением обнаружили, что это работает. Мы были удивлены, потому что документы говорят nativeOn:
Позволяет слушать
// нативные события, а не события
// компонент, использующий vm. $ emit
В этом случае мы используем событие, генерируемое (настраиваемым) компонентом с использованием vm. $ Emit.
Вот фрагмент нашего кода, демонстрирующий вышесказанное:
on: {
input: (event) => {
console.log('hi'); // We did not receive "hi" in the console
}
},
nativeOn: {
input: (event) => {
console.log('hi2'); // We did receive "hi2" in the console
}
Любое разъяснение о том, почему нам нужно nativeOn для прослушивания «входных» событий из пользовательского компонента, или о том, когда использовать nativeOn и on, и различия в них будут наиболее цениться. Заранее спасибо!