0

我有 v-for 循环,其中的元素有 :click 调用函数。该功能会在页面加载时的每个元素上自动触发!

<li v-if="itemSaved.length > 0" v-for="(item, index) in items" class="list-group-item">
   <div class="pull-right m-l">
     <i v-if="itemSaved[index] == 'not saved'" class="icon-plus" :click="addItem(item.id)"></i>
     <i v-else class="icon-check" :click="removeItem(item.id)"></i>
   </div>
</li>



export default {
 data: () => ({
  itemSaved: [{"id":1, "name":"Jim"},{"id":2, "name":"Max"}]
}),
methods: {

  addItem: function(id){
    console.log('add item ' + id)
  }, 
  removeItem: function(id){
    console.log('remove item ' + id)
  }
}
}

基本上我在控制台日志中add item 1得到一个列表add item 2

4

1 回答 1

3

应该:

@click="removeItem(item.id)"

不是:

:click="removeItem(item.id)"

当您拥有时,:click="removeItem(item.id)"您实际上是将removeItem(item.id)方法调用的结果绑定到click属性。这就是该方法“自动”执行的原因。

@click="handler" 事件处理指令v-on:click="handler"简写

:click="handler" 属性绑定指令v-bind:click="handler"简写

于 2018-04-27T17:26:31.043 回答