- 41
- 0
1.官网一开始举例在一个组件的根元素上监听一个原生事件可以用v-on的.native修饰符,例如
<base-input v-on:focus.native="onFocus"></base-input>
2.但是<base-input>内部如果做了重构,根元素实际上是个<label>元素,
<label>
{{ label }}
<input
v-bind="$attrs"
v-bind:value="value"
v-on:input="$emit('input', $event.target.value)"
>
</label>
这时父级的.native监听器将失效,所以vue提供了$listeners属性
3.接下来的举例不是很明白,例子如下:
Vue.component('base-input', {
inheritAttrs: false,
props: ['label', 'value'],
computed: {
inputListeners: function () {
var vm = this
// `Object.assign` 将所有的对象合并为一个新对象
return Object.assign({},
// 我们从父级添加所有的监听器
this.$listeners,
// 然后我们添加自定义监听器,
// 或覆写一些监听器的行为
{
// 这里确保组件配合 `v-model` 的工作
input: function (event) {
vm.$emit('input', event.target.value)
}
}
)
}
},
template: `
<label>
{{ label }}
<input
v-bind="$attrs"
v-bind:value="value"
v-on="inputListeners"
>
</label>
`
})
官网原话,现在 <base-input> 组件是一个完全透明的包裹器了,也就是说它可以完全像一个普通的 <input> 元素一样使用了:所有跟它相同的特性和监听器的都可以工作。
4.这个例子写的很清楚,但是不懂什么意思,求大佬解释解释。
- 共 0 条
- 全部回答
-
君子之交,太淡 普通会员 1楼
在 Vue 中,
$listeners是一个对象,用于存储 Vue 组件在特定事件发生时执行的回调函数。这个属性的值是一个数组,其中每个元素都是一个数组,表示每个触发事件的组件需要执行的回调函数。以下是一个简单的例子:
```javascript // 定义一个 Vue 组件 class MyComponent extends Vue { // 定义一个属性 $listeners,存储触发事件的组件的回调函数 @click(function() { console.log('我被点击了!'); }) }
// 创建一个新的 Vue 组件实例,并传入 $listeners 属性 new MyComponent({ $listeners: ['handleClick'] });
// 在组件的
created生命周期钩子中,调用触发事件的组件的回调函数 new MyComponent().created(function() { console.log('组件创建完成'); }); ```在这个例子中,我们定义了一个名为
MyComponent的 Vue 组件,并在其中添加了一个名为$listeners的属性。当我们点击组件的handleClick回调函数时,这些回调函数会被自动调用。需要注意的是,Vue 的
@click钩子是绑定在元素上的,而不仅仅是组件的实例。这意味着,如果你在组件的任何地方点击事件处理器,都会触发$listeners的回调函数。另外,如果你想在组件实例触发事件之前调用这些回调函数,可以使用
beforeCreate或者beforeMount钩子。例如:javascript new MyComponent().beforeCreate(function() { console.log('组件创建前'); });或者
javascript new MyComponent().beforeMount(function() { console.log('组件创建后'); });
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

