我有一个待办事项列表,它是通过jsonplace生成的,点击按钮用虚拟内容填充div。
我试图实现的是,当我点击单个div(任务)时,它应该被删除/隐藏。
迄今
<button id="btn" v-on:click= 'getTodo'>Show Todo</button>
<div id="jsonData" v-for = 'todo in todos' >
<ul v-bind:class = '{active: isActive}' v-on:click = 'removeTask'>
<li>{{todo.title}} </li>
<li id="status"> Task Status : {{todo.completed}} </li>
</ul>
</div>
JS
var vm = new Vue({
el: '#app',
data() {
return {
todos: [],
isActive: false
}
},
methods: {
getTodo: function() {
axios.get('https://jsonplaceholder.typicode.com/todos')
.then((response) => {
this.todos = response.data;
})
},
removeTask: function() {
this.isActive = !this.isActive;
}
}
})
“removeTask”事件处理程序为所有生成的div(任务)而不是单击的div切换类。
如何在单击的div上添加/删除类?
isActive
是整个实例的一个实例,而不是每个单独的待办事项。
您需要做的是通过映射响应数据或简单地使用响应数据的< code>completed属性来填充to do列表。
{
"userId": 10,
"id": 193,
"title": "rerum debitis voluptatem qui eveniet tempora distinctio a",
"completed": true
}
响应待办事项的每个项目都有已完成
的 prop,因此您可以使用该 prop。
这就是你要做的:
var vm = new Vue({
el: '#app',
data() {
return {
todos: []
}
},
methods: {
getTodo: function() {
axios.get('https://jsonplaceholder.typicode.com/todos')
.then((response) => {
this.todos = response.data;
})
},
toggleCompleted: function(todo) {
todo.completed = !todo.completed;
}
}
})
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.15/dist/vue.js"></script>
<div id="app">
<button id="btn" v-on:click='getTodo'>Show Todo</button>
<div id="jsonData" v-for='todo in todos'>
<ul v-bind:class='{active: todo.completed}' v-on:click='toggleCompleted(todo)'>
<li>{{todo.title}} </li>
<li id="status"> Task Status : {{todo.completed ? 'Completed' : 'Active'}} </li>
</ul>
</div>
</div>
使用axios
API,我获取待办事项,并务实地循环访问各个待办事项,并将isActive
prop应用于所有这些待办事项。现在,在将待办事项 ID
传递给方法时,可以通过切换
待办事项来切换这些道具。:-)
请注意,我在< code>ul上应用了< code > v-if = " todo . is active " ,如果您想要应用一些样式,例如用于过渡等,这也可以翻译为< code >:class = " { active:todo . is active } " 。
通过使用这种方法,您可以使用相同的逻辑来创建方法,例如完成Todo
和远程Todo
等
我添加了一个< code>showList属性来显示/隐藏实际的完整列表。
我注意到你使用了< code>v-bind和< code>v-on -这是绝对有效的,但是VUE ^2.0可以处理速记绑定:-)
我还注意到您在HTML属性中使用单
引号...虽然这不会破坏您的标记,但我认为将它们保留为双引号
是最佳做法。
var vm = new Vue({
el: '#app',
data: {
todos: [],
showList: false
},
mounted () {
this.getTodos()
},
methods: {
getTodos () {
axios.get('https://jsonplaceholder.typicode.com/todos')
.then(res => {
res.data = res.data.map(todo => {
todo.isActive = false
return todo
})
this.todos = res.data
})
},
showTodos () { this.showList = !this.showList },
toggleTodo (id) {
this.todos = this.todos.map(todo => {
if (todo.id === id) {
todo.isActive = !todo.isActive
}
return todo
})
}
}
})
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.15/dist/vue.js"></script>
<div id="app">
<button @click="showTodos()">{{this.showList ? 'Hide' : 'Show'}} Todos</button>
<div v-if="todos.length && showList" v-for="todo in todos">
<button id="btn" @click="toggleTodo(todo.id)">Toggle Todo</button>
<ul v-if="todo.isActive" :class="{active: todo.isActive}">
<li>{{todo.title}} </li>
<li id="status"> Task Status : {{todo.completed}} </li>
</ul>
</div>
</div>
<style lang="css">
.active {
border: 2px solid green;
}
</style>
问题内容: 如何使用ng-click分别在几个元素上切换类? 在这个问题中,点击切换类是这样完成的: CSS: JS: HTML: 但是,如果我有几个按钮,每个按钮都应通过ng-click切换自己的类,该怎么办? 如果以这种方式设置它: HTML: 如果我按下两个按钮,则两个按钮都将切换。 我知道一种解决方法是为每个按钮定义一个自己的ng-click事件(对于button1,例如f.ex togg
切换一个元素的样式类。 使用 element.classList.toggle() 来切换元素中指定样式类。 const toggleClass = (el, className) => el.classList.toggle(className); toggleClass(document.querySelector('p.special'), 'special'); // The parag
我已经创建了一组问题和答案,每个问题旁边是一个img,每当有人点击一个问题时,我会尝试切换该图像的src。到目前为止,因为问题存储在nodelist中,我设法让图像切换,但它切换了所有的图像,我只想让我点击的问题切换存储在里面的图像。 null null
我有一些jQuery,可以将定义列表转换为可扩展/可折叠的常见问题列表。 我在整个网站上有几个常见问题的链接,点击它们会将您发送到常见问题页面并展开相关问题,问题是一些常见问题的答案有指向其他问题的链接,而散列链接会跳到相关问题,但不会展开答案。 这是因为jQuery位于$(文档)中。就绪(function(),因此代码仅在页面重新加载后激活?是否需要触发重新加载? CHeers 有关完整代码,请
我得到了一个元素数组,我在页面上显示,使用 v-for: 现在我决定添加类别并仅显示数组中某些类别的报价(数据类似于: - 类别 1; - 类别 2 等... 所以我添加了最简单的v-Show元素,如下所示: 和特殊变量(从选择中获取值) 其中函数 checkArray 只是检查 specialityID 是否与 offer.speciality[i] 相同,并向 元素返回 true 或 fals
问题内容: 这个带有添加功能的删除技巧如何工作? 似乎它正在抓取第一个元素(空数组)之前的所有内容 然后将所有内容附加在第一个元素之后(位置零) …(点对点)有什么作用? 问题答案: 切片在哪里,是要删除的元素的索引: 是Go中可变参数的语法。 基本上,在 定义 函数时,它将把您传递的所有参数放入该类型的一个切片中。这样,您可以传递任意数量的参数(例如,可以传递任意数量的参数)。 现在,当 调用