在https://vuejs.org/v2/guide/render-function.html#The-Data-Object-In-Depth的 Vue 文档中,有对“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
},
我们正在尝试从我们创建的自定义组件中侦听“输入”事件。我们注意到在 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 以及其中的差异的任何说明都将不胜感激。提前致谢!