如何在 Vue 组件中的每个列表项上附加事件侦听器?

艾伦·奥马尔

我有一个这样的组件:

  Vue.component('navbar', {
  props: ['navitem'],
  methods: {
    users: function () {
        //users code
    },

    test:function(){
    }
  },
  template: '<li v-on:click="navitem.name"> {{navitem.name}} </li>'
  });

我想将以下数组传递给组件:

navitems: [{ id: 1, name: 'users' }, { id: 2, name: 'test' }]

并像这样渲染它们:v-for="item in naviitems" v-bind:navitem="item" :key="item.id"

这样每个列表项都会得到相应的事件监听器,即最终呈现的列表项将是这样的:

  <li v-on:click="users()"></li> 
  <li v-on:click="test()"></li>

如果可能,如何做到这一点?

武士8

请记住,您正在向组件传递一个字符串,而不是函数引用。要调用该函数,只需在组件对象中查找该函数,然后调用它即可从该组件中“选择”该函数。

Vue.component('navbar', {
  props: ['navitem'],
  methods: {
    users: function () {
        //users code
    },

    test:function(){
    },

    clickHandler(name) {
      this[name]();
    }
  },
  template: '<li v-on:click="clickHandler(navitem.name)"> {{navitem.name}} </li>'
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何防止来自 Vue Js 组件中的事件侦听器的多次调用?

如何正确删除 vue 3 中的事件侦听器

如何在react js中的材料ui中的列表项上设置单击侦听器

如何从 vanilla JS 事件侦听器修改 Vue 数据?

使用vm。$ once()时,Vue应用程序如何将附加参数传递给事件侦听器?

如何在删除列表项后刷新Vue组件?

Javascript Vanilla-如何在ajax内容内的元素上附加事件侦听器?

如何在noUiSlider上附加onchange侦听器

如何使用事件委托而不是将事件侦听器分别附加到每个项目?

Vue:如何在同级组件上触发事件

如何在声明性组件中创建onChange事件侦听器?

如何在DOM元素上查找事件侦听器列表?

如何在 vue 组件上添加图像?

如何在Firebase值事件上设置侦听器?

如何在div上使用“ keydown”事件侦听器?

如何使用事件侦听器将类切换到单个列表项

如何在Vue组件事件中触发Apollo查询?

是否可以从Vue.js 2中的组件访问事件侦听器

如何在Vue中扩展组件的行为

如何在Vue中动态加载组件

如何在父Vue中触发组件?

如何在vue中复制组件状态?

如何在VUE组件的mapState中调用“ this”?

如何将拖放事件侦听器附加到React组件

如何在EaselJS对象中删除事件侦听器

如何在 JavaScript 中停用 beforeunload 事件侦听器

在调试时或从JavaScript代码中如何在DOM节点上查找事件侦听器?

如何在尚未在 DOM [no-jQuery] 中的元素上添加事件侦听器?

如何从 socket.io 侦听器函数访问 vue 组件数据?