阵列的Vue单击事件

时间:2018-10-16 02:56:03

标签: javascript vue.js vuejs2

<div v-for="(n, index) in items" :id="n" @click="myMethod($event)">{{n}}</div>

数组就像

items: [mouse, bull, tiger, rabbit, pig, cat, dog, horse]

方法就像

myMethod: function(event){
    console.log(event.target.id);
}

我想单击每个div,该div会告诉我其内容,因此我将内容绑定到每个div的ID。问题是我无法访问myMethod()中项目的索引。我想将每个项目的索引用于其他目的。如何访问它们?目前,我只能通过id属性将数据传递给该方法。

2 个答案:

答案 0 :(得分:2)

您可以像这样将索引传递到方法中。

<div v-for="(n, index) in items" :id="n" @click="myMethod($event, index)">{{n}}</div>

答案 1 :(得分:2)

  

我想将每个项目的索引用于其他目的。我怎么能够   访问它们?

这非常简单,只需传递它,就像这样:

<div v-for="(n, index) in items" :id="n" @click="myMethod(index)">{{n}}</div>

这是CodeSandbox上的一个有效示例:https://codesandbox.io/s/m363rl73oy

另一个演示:

var app = new Vue({
  el: '#app',
  data: {
    items: ['mouse', 'bull', 'tiger', 'rabbit', 'pig', 'cat', 'dog', 'horse']
  },
  methods: {
    handleClick: function(index) {
      alert(index)
    }
  }
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<div id="app">
  <div @click="handleClick(index)" v-for="(item, index) in items" :key="index">{{item}}</div>
</div>

如果要将数据传递给方法,只需像这样传递数据

var app = new Vue({
  el: '#app',
  data: {
    items: ['mouse', 'bull', 'tiger', 'rabbit', 'pig', 'cat', 'dog', 'horse']
  },
  methods: {
    handleClick: function(item) {
      alert(item)
    }
  }
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<div id="app">
  <div @click="handleClick(item)" v-for="(item, index) in items" :key="index">{{item}}</div>
</div>