[英]Emptying Vue.js Array
我最近开始使用 Vue.js,遇到了一个小问题。 我有一个数组,并使用 Vue.js 将该数组添加到呈现的代码中。 使用标准.push
可以很好地解决这个问题。
但是,我也希望能够清除将清除渲染代码的数组。 但是当我尝试array = []
清除它时,代码不起作用,一切都停止工作。
如何在不破坏程序的情况下清除列表?
我在下面的代码片段中复制了这个问题。
let results = [1, 2]; let num = 3; var app = new Vue({ el: '#app', data: { results: results } }); document.getElementById("add").addEventListener("click", function() { results.push(num); num++; }); document.getElementById("clear").addEventListener("click", function() { results = []; num = 1; });
.as-console-wrapper { height: 0px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <button id="add">Add</button> <button id="clear">Clear</button> <div id="app"> <h1 v-for="result in results"> {{ result }}</h1> </div>
所以我在你的应用程序中更新了一些小事情,以vue 的方式完成,而不是旧的 vanilla JS 方法。
data
部分中的所有组件数据,因此您不需要上面的 JS 变量。document.getElementById("add").addEventListener
方法,而只需在methods
中返回您的函数,然后只需使用v-on:click="addNew"
调用它们属性 new Vue({ el: "#app", data: () => { return { results: [3, 1, 4, 1, 5] }; }, methods: { addNew() { const nextNum = this.$data.results.length + 1; this.$data.results.push(nextNum); }, clearAll(){ this.$data.results = []; } } })
.as-console-wrapper { height: 0px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <h2>Awesome Counting App</h2> <button v-on:click="addNew">Add</button> <button v-on:click="clearAll">Clear</button> <hr> <ul> <li v-for="result in results" v-bind:key="result"> {{result}} </li> </ul> </div>
解决方案1:
移动#app 中的按钮并使用 Vue 的v-on:click处理程序。
let results = [1, 2]; let num = 3; var app = new Vue({ el: '#app', data: { results: results }, methods: { add: function() { this.results.push(num); num++; }, clear: function() { this.results = []; num = 1; } } });
.as-console-wrapper { height: 0px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <button v-on:click="add">Add</button> <button v-on:click="clear">Clear</button> <h1 v-for="result in results"> {{ result }}</h1> </div>
解决方案2:使用 Vue 的$data API
let results = [1, 2]; let num = 3; var app = new Vue({ el: '#app', data: { results: results } }); document.getElementById("add").addEventListener("click", function() { app.$data.results.push(num) num++; }); document.getElementById("clear").addEventListener("click", function() { app.$data.results = []; num = 1; });
.as-console-wrapper { height: 0px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <button id="add">Add</button> <button id="clear">Clear</button> <div id="app"> <h1 v-for="result in results"> {{ result }}</h1> </div>
让它更 Vue ish!
<button @click="add">Add</button>
<button @click="clear">Clear</button>
var app = new Vue({
el: '#app',
data: {
results: [1, 2],
num : 3
},
methods(){
add(){
this.results.push(num);
this.num++;
},
clear(){
this.results = [];
this.num = 1;
}
}
});
如果你使用 Vuejs,你不需要在 Vue 实例之外声明任何变量,以及它们之外的任何 vanilla 代码。
你可以在 vue 实例中使用 vanilla,但现在你不需要它:
document.getElementById("add").addEventListener("click", function() {
results.push(num);
num++;
});
document.getElementById("clear").addEventListener("click", function() {
results = [];
num = 1;
});
相反,您可以这样使用:
new Vue({
el: '#app',
data: {
results: [],
num: 1
},
methods: {
addNumberArray(){
this.results.push(number);
number++;
},
clearNumberArray(){
this.results = [];
number = 1;
}
}
});
这是一个活生生的例子: https ://jsfiddle.net/n4krde0h/19/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.