javascript - 如何将for循环中的元素传递给父组件?
问题描述
背景我有一个子组件循环通过从我的父组件传递的名为“expenseButton”的数组。在这个 for 循环中是正在更新的元素。特别是“费用”。
子组件
<form class="container">
<div class="buttonList" v-for="(expense, index) in expenseButton" :key="index">
<button type="button" @click="expenseButtonClick(expense)">{{expense.expensesKey}}</button>
<input class="textInput" v-model.number="expense.subExpense" type="number" />
</div>
</form>
<script>
export default {
props: {
expenseButton: Array,
},
methods: {
expenseButtonClick(expense) {
expense.expensesValue = expense.expensesValue - expense.subExpense;
}
}
}
</script>
问题我知道 $emit 事件可以将数据传递给父级。但是,我试图找出将数组的更新元素发送回父组件的最佳方法。
父组件数据
<template>
<expense-button :expenseButton="expenseButton"></expense-button>
</template>
<script>
export default {
components: {
"expense-button": Expenses
},
data() {
return {
expenseButton: [
{"expensesKey":"rent","expensesValue":null,"subExpense":""},
{"expensesKey":"movies","expensesValue":null,"subExpense":""},
{"expensesKey":"clothes","expensesValue":null,"subExpense":""}
],
};
}
}
</script>
解决方案
我认为你应该使用 $emit。子组件:
<form class="container">
<div class="buttonList" v-for="(expense, index) in expenseButton" :key="index">
<button type="button" @click="expenseButtonClick(expense)">{{expense.expensesKey}}</button>
<input class="textInput" v-model.number="expense.subExpense" type="number" />
</div>
</form>
<script>
export default {
props: {
expenseButton: Array,
},
methods: {
expenseButtonClick(expense) {
expense.expensesValue = expense.expensesValue - expense.subExpense;
this.$emit("expense-btn-clicked", expense)
}
}
}
</script>
父组件:
<template>
<expense-button :expenseButton="expenseButton" @expense-btn-clicked="btnClickedHandler"></expense-button>
</template>
<script>
export default {
components: {
"expense-button": Expenses
},
data() {
return {
expenseButton: [
{"expensesKey":"rent","expensesValue":null,"subExpense":""},
{"expensesKey":"movies","expensesValue":null,"subExpense":""},
{"expensesKey":"clothes","expensesValue":null,"subExpense":""}
],
}
},
methods: {
btnClickedHandler(e) {
console.log(e)
}
}
}
</script>
推荐阅读
- python - 具有不同数据类型的 Numpy 数组
- c# - 如何在 ASP.NET Core 中获取没有构造函数注入的注入服务的实例?
- javascript - 尝试在 NodeJS 中使用 Axios 返回数据时获取 [Object Promise]
- c++ - 如何通过重载yield_value递归生成生成器?
- python - 填补分类数据漏洞的有效方法?
- node.js - 产生连续的 bash 命令并等待每次完成的流
- python-3.x - 我怎么解决这个问题?(与代码错误相比)
- arangodb - 如何从 arangodb udf 中的集合返回数据
- c# - 如何在c#中从appsettings文件访问用户名和密码到program.cs
- javascript - 如何修复 TypeError:navigation.setOptions 不是函数