javascript - Vue.js 中的事件监听器

标签 javascript vue.js vuejs2 vue-component

我目前正在使用 Vue.js 构建一个小型警报应用程序。我想在带有“del”类的按钮上有一个 eventListener 来调用方法并移交事件,我正在使用 Vue 的“mounted”功能:

mounted: function timeInterval () {
    var app = this;

    var del = document.getElementsByClassName("del");
    del.addEventListener('click', function (e) {
      app.deleteAlarm(e);
    },
}

在该方法中,我想获取被单击的按钮的 id 并对其执行某些操作:

deleteAlarm: function (e) {
  var app = this;
  var id = e.target.id;
  app.alarms.splice(id, 1);
}

我花了几个小时来找出问题所在,但我无法弄清楚。

编辑:我想要执行此操作的方式很重要,因为按钮是动态列表的一部分,通过 v-html 呈现。这是将 HTML 添加到数据变量的方法:

getAlarmList: function () {
  var app = this;
  app.alarmTable = '';
  for (let i=0; i<app.alarms.length; i++) {
    app.alarmTable += "<tr><td>"+app.alarms[i][0]+"</td><td>"+app.alarms[i][1]+":"+app.alarms[i][2]+":"+app.alarms[i][3]+"</td><td><button type=\"button\" id=\""+i+"\" class=\"btn btn-dark btn-sm del\">Löschen</button></td></tr>";
  }

这就是使用 v-html 指令渲染变量的方式:

<table class="table table-striped table-bordered">
  <thead>
    <tr>
      <th>Name</th>
      <th>Time</th>
      <th></th>
    </tr>
  </thead>
  <tbody v-html="alarmTable">

  </tbody>
</table>

最佳答案

我不确定如何使用事件监听器方法,但我认为将 v-for 指令与 vue 模板一起使用将允许您执行您需要的操作。

<table class="table table-striped table-bordered">
  <thead>
    <tr>
      <th>Name</th>
      <th>Time</th>
      <th></th>
    </tr>
  </thead>
  <tbody v-html="alarmTable">
    <template v-for="(alarm, index) in alarms">
      <tr>
        <td>{{ alarm[0] }}</td>
        <td>{{ alarm[1] }}:{{ alarm[2] }}:{{ alarm[3] }}</td>
        <td>
          <button
            type="button"
            v-on:click="deleteAlarm(index)"
            class="btn btn-dark btn-sm"
          >
            Löschen
          </button>
        </td>
      </tr>
    <template>
  </tbody>
</table>

然后,您可以修改 deleteAlarm() 函数来删除该行,或从 alarms 数组中删除该项目。

关于javascript - Vue.js 中的事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46836509/

相关文章:

javascript - 将 url 的内容发送到打印机

javascript - 在 shell 脚本中运行两个 Node 进程

javascript - 我的关于 Axios 和功能的 Vue.js 代码不起作用

javascript - Vuejs 过渡仅在幻灯片打开时发生

javascript - vue.js 在直接 css/样式更改和从数组中删除项目时的奇怪行为

java - 通过 websocket 将视频文件发送到浏览器

Javascript Array.prototype.filter() 不工作

javascript - Nuxt auth模块未将登录用户设置为存储状态

css - Tailwind CSS 响应式断点在 Vue 中不起作用

javascript - Vue 文本输入掩码