【问题标题】:Get a object data with click in v-for Div点击 v-for Div 获取对象数据
【发布时间】:2020-02-21 22:44:39
【问题描述】:

我有一个带有 v-for 的 div,我想获取我单击的 div 的对象值。当我单击带有警报的 div 时,我尝试在数据中显示,但它不起作用。你能帮我解决这个问题吗?

<div id="ticketContent" v-for="ticket in tickets" @click="getTicketInformations">
              <h5> Ticket : {{ ticket.ticketID }}</h5>
              <p>Ticket Number : {{ticket.ticketNumber}}</p>
              <p>Start Date : {{ticket.startDate}}</p>
              <p>Expire Date : {{ticket.expireDate}}</p>
              <p>Hours : {{ ticket.hours }} </p>
            </div>

state : {
   tickets :[
            {"ticketID":1001,
            "ticketNumber":"2783sA",
            "startDate":"05/10/2018",
            "expireDate":"10/21/2022",
            "hours":"08:00-22:00"},
            {"ticketID":1002,
            "ticketNumber":"8a210j",
            "startDate":"01/03/2018",
            "expireDate":"01/03/2020",
            "hours":"14:00-18:00"},
            {"ticketID":1003,
            "ticketNumber":"L90Np1",
            "startDate":"10/01/2015",
            "expireDate":"10/01/2020",
            "hours":"10:00-20:00"},
            {"ticketID":1004,
            "ticketNumber":"L90Np1",
            "startDate":"05/01/2015",
            "expireDate":"05/01/2016",
            "hours":"15:00-23:00"}],
}
<script>
import { mapGetters } from 'vuex';

export default {
    computed: {
      ...mapGetters({
        tickets : 'tickets'
      }),
    },
    methods : {
      getTicketInformations(){
        alert(ticket)
      }
    }
}
</script>

【问题讨论】:

  • 我找到的人。使用我的函数发送票证对象,然后获取适用于我的方法的数据
  • silentcontrol,是的,就是这样。将参数添加到您的点击方法中:@click="getTicketInformations(ticket)"

标签: javascript arrays vue.js vuex


【解决方案1】:

您可以在模型中添加 selectedTicket 属性,然后在点击事件中将票证实例传递给 showTicket 方法。

<script src="http://unpkg.com/vue"></script>

<style>
    .ticket{padding:5px; border-bottom:1px solid lightblue}
</style>

<div id="app" style="width:100vw">
    Tickets:
    <div class="ticket" v-for="ticket in tickets"
         v-bind:key="ticketID"
         @click="showTicket(ticket)">
        {{ticket.ticketNumber}}
    </div>
    <br/>
    Selected Ticket:
    <div>{{selectedTicket}}</div>

</div>

<script>
new Vue({
    el: "#app",
    data() {
        return {
            selectedTicket: null,
            tickets: [
                {
                    "ticketID": 1001,
                    "ticketNumber": "2783sA",
                    "startDate": "05/10/2018",
                    "expireDate": "10/21/2022",
                    "hours": "08:00-22:00"
                },
                {
                    "ticketID": 1002,
                    "ticketNumber": "8a210j",
                    "startDate": "01/03/2018",
                    "expireDate": "01/03/2020",
                    "hours": "14:00-18:00"
                }
            ]
        }
    },
    methods: {
        showTicket(ticket) {
            this.selectedTicket = ticket;
        }
    }
})
</script>

【讨论】:

    【解决方案2】:

    试试这个:

    改变vfor

    <div id="ticketContent_(index)" v-for="(ticket, index) in tickets" @click="getTicketInformations(index)">
    

    以及方法:

    getTicketInformations(index){
            alert("clicked on ->" + document.getElementById(ticketContent_' + index + '))
          }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      相关资源
      最近更新 更多