如何在javascript中为事件发送2个参数

Posted

技术标签:

【中文标题】如何在javascript中为事件发送2个参数【英文标题】:How to send 2 params for event in javascript 【发布时间】:2020-02-23 12:38:04 【问题描述】:

我有点困惑如何在 javascript、vuejs 中发送 2 个用于事件监听的参数。我正在尝试在 keyup===13(enter) 事件时编辑输入数据,但我不知道如何发送带有该值的事件..当我发送 2 个参数时,它一直说事件不是函数。

所以我为每个事件监听创建了 2 个方法。 1. 点击 :获取每本书的列表 2. keyup===13 : 保存数据

任何想法..?如何在 1 中处理这个问题?

数据

let books = new Map();
books.set('1910', 
    'park':  userName: 'park', bookTitle: 'book1', bookThumbnail: 'book1', bookUrl: 'book1' ,
    'ryu':  userName: 'ryu', bookTitle: 'book2', bookThumbnail: 'book2', bookUrl: 'book2' ,
    'lee':  userName: 'lee', bookTitle: 'book3', bookThumbnail: 'book3', bookUrl: 'book3' 
)

BookMain 组件

<template>
  <v-container>
...
  <tbody>
          <tr v-for="book in books" :key="book.userName" :class="setCss.textAlign">
            <td>book.userName</td>
            <td>
              <input type="text" :value="book.bookTitle" @click="getUser(book)" @keyup="save" />
            </td>
            <td>book.bookThumbnail</td>
            <td>book.bookUrl</td>
          </tr>
        </tbody>
      </template>
    </v-simple-table>
  </v-container>
</template>

脚本

  computed: 
    books: function() 
      let books = this.$store.getters.getBooks;
      let month = this.date;

      let a = books.get(month);

      return a;
    
  ,

方法

  methods: 
    save: function(event) 
      event.preventDefault();

      if (event.keyCode === 13) 
        console.log(1);

      

    ,

    getUser: function(book) 
      //   console.log(book);

      var editedUsername = book.userName;
      var editedBookTitle = event.target.value;
      var editeBookThumbnail = book.bookThumbnail;
      var editedBookUrl = book.bookUrl;

      var item = new Object();
      item.userName = editedUsername;
      item.bookTitle = editedBookTitle;
      item.bookThumbnail = editeBookThumbnail;
      item.bookUrl = editedBookUrl;

      console.log(item);
      return item;
    
  

【问题讨论】:

【参考方案1】:

基于this answer。如果您想在 getUser 方法中获取事件,请在绑定中使用 $event。像这样:

<td>
  <input type="text" :value="book.bookTitle" @click="getUser(book, $event)" @keyup="save" />
</td>

【讨论】:

【参考方案2】:

new Vue(
  el: '#app',
  data() 
    return 
      book: 
        bookTitle: 'title'
      
    
  ,
  methods: 
    getUser(e, book) 
      console.log(book);
    
  
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>

<div id="app">
  <input type="button" :value="book.bookTitle" @click="getUser($event,book)" />
</div>

【讨论】:

以上是关于如何在javascript中为事件发送2个参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Alamofire 中为 GET 方法发送自定义参数?

如何在 javascript 中为所有事件添加事件侦听器而不单独列出它们?

如何在 JavaScript 中为私有变量使用与函数参数相同的名称? (使代码看起来更好)

如何在 Javascript 中为不和谐机器人制作随机生成器?

如何让我的 Discord Bot 用 Ja​​vascript 编写以更快地发送消息?

如何在一个具有不同参数的连续调用两次的javascript中为函数添加回调?