【发布时间】:2019-07-23 06:49:18
【问题描述】:
我对数组的复选框和 vue 过滤器有问题。
new Vue({
el: "#app",
data: {
todos: [
{ text: "Learn JavaScript"},
{ text: "Learn Vue"},
{ text: "Play around in JSFiddle"},
{ text: "Build something awesome"}
],
search: '',
},
methods: {
},
computed: {
filtered() {
return this.todos.filter(todo => {
return todo.text.toLowerCase().includes(this.search.toLowerCase())
})
},
}
})
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
li {
margin: 8px 0;
}
h2 {
font-weight: bold;
margin-bottom: 15px;
}
del {
color: rgba(0, 0, 0, 0.3);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<input type="text" v-model="search">
<ol>
<li v-for="todo in filtered">
<label>
<input type="checkbox">
<del v-if="todo.done">
{{ todo.text }}
</del>
<span v-else>
{{ todo.text }}
</span>
</label>
</li>
</ol>
</div>
如果您首先从数组中检查并搜索其他任何一个:
检查 -> 学习 javascript
搜索 -> 学习 Vue
Vue 似乎被检查了..
假设是这样工作的吗?
如何从显示的列表中删除所有内容并同时追加?
【问题讨论】:
-
由于 vue 的优化,Vue 似乎需要检查。为每个复选框使用 v-model 以避免这种情况。
-
你能给出一个可行的例子吗?
-
真正的问题是,为什么会这样,我也很好奇。
-
@Deda 因为 vue 的优化过程。它使用虚拟 DOM 对 DOM 做尽可能少的更改。
标签: javascript vue.js