首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于vue,为什么div的remove事件无效?

对于vue,为什么div的remove事件无效?
EN

Stack Overflow用户
提问于 2018-05-10 08:54:43
回答 1查看 53关注 0票数 0

我想通过vue手册学习vue和模板。对于v-for和组件,我的代码:

代码语言:javascript
复制
<div id="app-7">
  <input v-model="newTodoText" v-on:keyup.enter="addNewTodo" placeholder="Add a todo">
  <ul>
    <todo-item2
        v-for="(todo, index) in todos"
        v-bind:key="todo.id"
        v-bind:id="todo.id"
        v-bind:title="todo.title"
        v-on:remove="todos.splice(index, 1)">
    </todo-item2>
  </ul>
</div>

我的main.js代码是:

代码语言:javascript
复制
Vue.component('todo-item2', {
  template: '<li>{{ title }}-{{ id }}<div v-on:remove="testRemove"><button v-on:click="$emit(\'remove\')">X</button></div></li>',
  props: ['title', 'id'],
  methods: {
    testFunc: function () {
      console.log('div click event trigger')
    },
    testRemove: function () {
      console.log('div remove event trigger')
    }
  }
}) 

var app7 = new Vue({
  el: '#app-7',
  data: {
    newTodoText: '',
    todos: [
      {
        id: 1,
        title: 'Do the dishes'
      },
      {
        id: 2,
        title: 'Take out the trash'
      },
      {
        id: 3,
        title: 'Mow the lwan'
      }
    ],
    nextTodoId: 4
  },
  methods: {
    addNewTodo: function () {
      this.todos.push({
        id: this.nextTodoId++,
        title: this.newTodoText
      })
      this.newTodoText = ''
    }
  }
})

我发现单击按钮会导致删除li标签,所以我知道li的删除事件是触发的。但是我不明白为什么不触发div‘’remove事件。谁能告诉我的$emit(‘删除’)?$emit(args)触发当前实例事件意味着什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-10 13:52:16

您的div组件没有remove事件。如果更改为click事件(v-on:click="testRemove"),则可以看到控制台日志div remove event trigger

代码语言:javascript
复制
Vue.component('todo-item2', {
  template: '<li>{{ title }}-{{ id }}<div v-on:click="testRemove"><button v-on:click="$emit(\'remove\')">X</button></div></li>',
  props: ['title', 'id'],
  methods: {
    testFunc: function () {
      console.log('div click event trigger')
    },
    testRemove: function () {
      console.log('div remove event trigger')
    }
  }
})

默认情况下,Vue on support DOM events event.asp

更新的

v-on:click="$emit(\'remove\')"将调用这个.$emit事件。这里,这将是todo-item2组件。它只向todo-item2的父级发出事件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50269053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档