[英]Is there a way to add properties or component data to looped objects with Alpine.js?
本質上,我從服務器接收 JSON 並想向我正在循環的對象或組件的x-data
添加屬性,這可能與 alpine.js 一起使用嗎?
數據是按時間間隔請求的,類似於:
let teams = [
{ id: 1, name: 'Person 1'},
{ id: 2, name: 'Person 2'},
...
];
我想要做的是向循環的team
對象添加一個新的屬性favourite
,默認設置為false
或將其添加為組件數據。 我計划稍后使用此屬性來過濾列表。 目前我有:
<template x-for="team in teams" :key="team.id">
<tr>
<td x-text="team.name"></td>
<td>
<input type="checkbox" x-model="favourite">
</td>
</tr>
</template>
我嘗試了一些方法來使其正常工作,例如使用:
x-data="{ team: team, favourite: false }"
在tr
和template
標簽上,以及不將team
對象傳遞給x-data
指令。 x-for
和x-data
指令之間似乎存在沖突,因為這會引發錯誤: Uncaught ReferenceError: team is not defined
我還嘗試將x-init
與x-data
指令一起使用,但無濟於事。
在這個階段,我想知道是否必須切換到另一個 JS 庫才能使其正常工作(如有必要,歡迎提出建議),或者我的方法是否從根本上是錯誤的。
任何幫助/指針將不勝感激。
原則上你應該做的是在它到達x-for
之前添加“收藏夾”字段。
例如,如果您使用fetch
加載teams
您可以執行以下操作:
<div
x-data="{ teams: [] }"
x-init="setInterval(() => {
fetch('/teams-url').then(res => res.json()).then(teamsData => {
teams = teamsData.map(team => ({ favourite: false, ...team }));
});
}, 1000);"
>
我還注意到您的示例使用的是v-model
和v-text
,它們應該分別是x-model
和x-text
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.