Vue.js 如何仅在VueJS组件已连接v-on时显示该组件的元素?

Vue.js 如何仅在VueJS组件已连接v-on时显示该组件的元素?,vue.js,Vue.js,我有一个VueJS组件。如果有“event”事件的处理程序,我需要显示它的某些部分 仅当v-on:event不为空时显示 添加附加属性并不是一个简单的解决方案。我将为附加的v-on:event定义并发送vOnStatus=true 然后对要显示的元素执行v-if=“vOnStatus”我将为附加的v-on:event定义并发送vOnStatus=true 然后对我要显示的元素执行v-if=“vOnStatus”,组件具有$listeners属性,该属性是绑定到v-on上组件的函数字典,我认为

我有一个VueJS组件。如果有“event”事件的处理程序,我需要显示它的某些部分


仅当v-on:event不为空时显示


添加附加属性并不是一个简单的解决方案。

我将为附加的v-on:event定义并发送vOnStatus=true
然后对要显示的元素执行v-if=“vOnStatus”

我将为附加的v-on:event定义并发送vOnStatus=true
然后对我要显示的元素执行v-if=“vOnStatus”,组件具有
$listeners
属性,该属性是绑定到
v-on
上组件的函数字典,我认为您可以使用它来实现这一点

发件人:

但我建议你遵循@kat advice,不要那样做。这让人感觉它不是为这个而设计的,请再仔细想想:您想让一个组件根据是否被其他人查看而改变其行为吗?除非你们设计量子粒子,否则在我看来,这不是组件应该如何工作的


我刚刚意识到我已经看到了你想要的行为(尽管我仍然认为按钮不值得做,就像你的评论所建议的那样),但也许这对你来说会更好。看一看:这是一个表,它有一个
提供程序
道具,可以是一个函数。无论您是否设置
提供程序
,它都会更改行为-如果不设置,它不会调用函数,而是转到
属性以获取数据


这是通过使用
v-bind
而不是
v-on
来完成的,但是绑定是对函数完成的。这可能是一种更好的方法,因为您不必再使用
$listeners
,它提供了一种洞察力,即行为会根据您是将属性设置为函数还是将属性设置为null而发生变化

组件具有
$listeners
属性,该属性是绑定到组件的函数字典
v-on
,我想你可以用它来做这个

发件人:

但我建议你遵循@kat advice,不要那样做。这让人感觉它不是为这个而设计的,请再仔细想想:您想让一个组件根据是否被其他人查看而改变其行为吗?除非你们设计量子粒子,否则在我看来,这不是组件应该如何工作的


我刚刚意识到我已经看到了你想要的行为(尽管我仍然认为按钮不值得做,就像你的评论所建议的那样),但也许这对你来说会更好。看一看:这是一个表,它有一个
提供程序
道具,可以是一个函数。无论您是否设置
提供程序
,它都会更改行为-如果不设置,它不会调用函数,而是转到
属性以获取数据


这是通过使用
v-bind
而不是
v-on
来完成的,但是绑定是对函数完成的。这可能是一种更好的方法,因为您不必再使用
$listeners
,而且它提供了一种洞察力,即行为会根据您是将属性设置为函数还是设置为null而改变,我想这是您的意思。但它复制了现有的信息。如果只有组件无法获取有关其事件侦听器的信息,则接受。当v-on:event被触发或发出时,将定义vOnStatus=“true”,我们可以调整其元素是否显示,但我认为无法检查动态附加的事件侦听器是否存在。我想你的意思是。但它复制了现有的信息。如果只有组件无法获取有关其事件侦听器的信息,则接受。当v-on:event被触发或发出时,将定义vOnStatus=“true”,我们可以调整其元素是否显示,但我认为无法检查动态附加的事件侦听器是否存在。实际上,该组件是一组允许执行某些操作的控件和按钮。我认为,如果我只需要显示带有动作的按钮,这是一个很好的解决方案。或者我想禁用没有操作的控件。解决方案:

@AlexanderChzhen也请查看我的编辑,也许另一种方法更可取实际上,此组件是一组允许执行某些操作的控件和按钮。我认为,如果我只需要显示带有动作的按钮,这是一个很好的解决方案。或者我想禁用没有操作的控件。解决方案:

@AlexanderChzhen也请查看我的编辑,也许其他方法更可取
{
  focus: function (event) { /* ... */ }
  input: function (value) { /* ... */ },
}