javascript - 具有三个不同编号的按钮的 Vue 组件
问题描述
我有一个组件,它创建 3 个项目(框),每个项目内有 3 个按钮(我使用 v-for),每个按钮里面都有一个数字,当我点击它时我想更改按钮内的数字,但现在所有数字同时改变
<template>
<div>
<div class="box" v-for="message in messages" v-bind:key="message">
<p>{{ message }}</p>
<button class="btn" v-on:click="counter++">{{ counter }}</button>
</div>
</div>
</template>
<script>
export default {
name: "childComponent",
data: function () {
return {
messages: ["item 1", "item 2", "item 3"],
counter: 0,
};
},
};
</script>
<template>
<div class="container">
<h2>Soy el componente padre</h2>
<child-component />
</div>
</template>
<script>
import childComponent from "./Hijo.vue";
export default {
name: "fhaterComponent",
components: {
childComponent,
},
};
</script>
我有带孩子的父亲。我花了一整天的时间试图弄清楚如何去做,但我被困住了
解决方案
问题是按钮在数据中共享相同的属性。该组件将需要一个数据结构来独立跟踪消息中每个项目的计数器......
<template>
<div>
<div class="box" v-for="(counter, i) in counters" v-bind:key="i">
<p>{{ counter.message }}</p>
<button class="btn" v-on:click="counter.count++">{{ counter.count }}</button>
</div>
</div>
</template>
<script>
export default {
name: "childComponent",
data: function () {
return {
messages: ["item 1", "item 2", "item 3"],
counters: [],
};
},
mounted () {
this.counters = messages.map(message => ({ message, count: 0}));
// so counters will be [ { message: "item 1" , count: 0 }, ... ]
},
};
</script>
推荐阅读
- c# - 如何使用区域 OCR 方法动态提取订单项?
- gradle - 如何在运行测试之前运行应用程序(gradle/kotlin/springboot)
- angular - Angular 6 http.get subscribe 无需查询 api 即可获得相同的数据
- python - 将字符串转换为带有变量的列表
- javascript - 为什么我的文件阅读器无法从 xmlhttprequest 读取此数据 url
- rust - 如何在 Rust / gtk-rs 中创建一个简单的 Gtk MessageDialog?
- html - 在 scss 中使用 mixin 使用类的名称来赋予特定的颜色
- css - CSS 结束一个关键帧循环动画并让它重新开始动画
- node.js - Slackbot(节点):icon_emoji 功能不起作用
- reactjs - 从表单字段中获取值