【发布时间】:2021-05-01 19:37:09
【问题描述】:
我将创建一个简单的 Vue.js 应用程序,在我的应用程序中,我有计数器块,我使用 v-for 渲染它,在我的 data 中我有 'counter: 0' 实例,我想增加并在单击发生时仅减少元素的一个块,现在我有不需要的行为,当按下按钮时,两个块的数值都会发生变化。
我该如何解决这个问题?
var example1 = new Vue({
el: '#example-1',
data: {
counter: 0
},
methods:{
increment(){
this.counter++
},
decrement(){
this.counter--
}
}
})
.firs-comp{
border:2px solid red;
margin-top:10px;
margin-bottom:10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="example-1">
<div class="firs-comp">
<button v-on:click="increment">Add 1</button>
<p>The button above has been clicked {{ counter }} times.</p>
<button v-on:click="decrement">remove 1</button>
</div>
<div class="firs-comp">
<button v-on:click="increment">Add 1</button>
<p>The button above has been clicked {{ counter }} times.</p>
<button v-on:click="decrement">remove 1</button>
</div>
</div>
【问题讨论】:
-
看看我用数组写的解决方案,我刚刚修好了
-
那是因为这两种方法都在递增同一个数据源。如果您想将它们分开,最好的方法是创建一个独立的计数器组件并在模板中使用它两次。这将使他们的计数数据完全分开,并保持您的代码干燥。
标签: javascript vue.js