簡體   English   中英

JavaScript Map 函數將對象傳遞給模板文字中的另一個函數

[英]JavaScript Map Function Passing Object to another Function in Template Literal

我有以下函數,我使用 map 函數遍歷數組。 我想將票證對象傳遞給 sendTicketToArchive 函數。 下面的代碼拋出一個異常,表示這是不可能的並且對象未定義。 我怎樣才能實現它?

function updateUI(allTickets) {    
    let allTicketsAttributes = allTickets.map((ticket,index) => {
        return `
                <div class="ticket">
                    Subject: ${ticket.Subject}
                    <p>Submitted at: ${ticket.Date}</p>
                    <p>Priority: ${ticket.Priority}</p>
                    <p>Description: ${ticket.Description}</p>
                    <div id="ticketButtons">
                        <button onclick='cancelTicket("${ticket.ticketId}")'>Cancel</button>
                        <button onclick='sendTicketToArchive(${ticket})'>Remove</button>
                    </div>
                </div>
               `
    })
        allTicketsUL.innerHTML = allTicketsAttributes.join('')
}

您正在構建一個字符串,因此您需要對對象進行字符串化,以便將其正確傳遞給sendTicketToArchive()函數。 試試這個例子:(這是你的代碼,但有點修改,我使用了JSON.stringify()

 function updateUI(allTickets) { let allTicketsAttributes = allTickets.map((ticket,index) => { return ` <div class="ticket"> Subject: ${ticket.Subject} <p>Submitted at: ${ticket.Date}</p> <p>Priority: ${ticket.Priority}</p> <p>Description: ${ticket.Description}</p> <div id="ticketButtons"> <button onclick='cancelTicket("${ticket.ticketId}")'>Cancel</button> <button onclick='sendTicketToArchive(${JSON.stringify(ticket)})'>Remove</button> </div> </div> ` }); console.log(allTicketsAttributes.join('')); } updateUI([ {Subject: 'sub1', Date: 'date1', Priority: 'prio1', Description: 'desc1', ticketId: 1}, {Subject: 'sub2', Date: 'date2', Priority: 'prio2', Description: 'desc2', ticketId: 2} ]);

這樣你只需發送ticket.toString,應該有全局可用的變量名稱,例如

let allTicketsGlobal
function updateUI(allTickets) {    
  allTicketsGlobal = allTickets    
  let allTicketsAttributes = allTickets.map((ticket,index) => {
...
<button onclick='sendTicketToArchive(allTicketsGlobal[${index}])'>Remove</button>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM