javascript - Vue - 包装 HTML5 元素

标签 javascript vue.js

我想创建一个包装 textarea 元素的组件。它的功能是添加自定义功能和自定义样式,但我不希望它被限制在自己的范围内——相反,父级应该能够绑定(bind)到常规事件,如 input

需要但无法工作的示例(问题在 parent.vue 中突出显示):

区域.vue:

<template>
    <textarea rows="1"></textarea>
</template>

<script>
    export default {
        mounted() {
            // do something...
        }
    }
</script>

<style scoped>
    textarea {
        height: 100%;
    }
</style>

parent.vue:

<template>
    <area @input="doSomething"></area>
</template>

<script>
    import Area from "./area.vue"

    export default {
        methods: {
            doSomething(){
                // NOT TRIGGERED!
                // `input` event is not passed over to parent scope
            }
        },
        components: {
            Area
        }
    }
</script>

我不想在 this.$emit 调用中显式写入组件。

最佳答案

你只需要加上 .native @input .

Vue 的 v-on/@ , 当在组件上使用时(没有 .native ),只监听由 emit 声明的自定义事件.

关于javascript - Vue - 包装 HTML5 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40773694/

相关文章:

javascript - 删除第一个单词 JS 之后的所有内容

javascript - 如果 else 失败,则嵌套后 else 不起作用

javascript - 如何将值 javascript onclick 传递给 jquery 函数

typescript - 如何让 cypress.io 向左滑动 ionic ion-item-sliding?

javascript - 带后退按钮的 Vue.js 路由

javascript - Vuex:我怎样才能更新这个对象的唯一元素?

javascript - iFrame 滚动事件检测

asp.net-mvc - ASP.NET MVC 5 Bundler 考虑过导入语句吗?

vue.js - 如何将 ASP Core Web API VueJS 站点部署到 IIS

Javascript onloadedmetadata 事件未在 iOS 设备上触发