Javascript Vue JS中单个元素的切换类
我有一个通过jsonplaceholder生成的待办事项列表,单击按钮会用虚拟内容填充div 我试图实现的是,当我点击一个单独的div(任务)时,它应该被删除/隐藏 到目前为止,Javascript Vue JS中单个元素的切换类,javascript,vue.js,Javascript,Vue.js,我有一个通过jsonplaceholder生成的待办事项列表,单击按钮会用虚拟内容填充div 我试图实现的是,当我点击一个单独的div(任务)时,它应该被删除/隐藏 到目前为止, <button id="btn" v-on:click= 'getTodo'>Show Todo</button> <div id="jsonData" v-for = 'todo in todos' > <ul v-bind:class = '{act
<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>
“removeTask”事件处理程序为所有生成的div(任务)而不是单击的div切换类
如何在单击的div上添加/删除类?
isActive
针对整个实例,而不是每个单独的todo
您需要做的是通过映射响应数据或仅使用响应数据的completed
属性来填充todo列表
{
"userId": 10,
"id": 193,
"title": "rerum debitis voluptatem qui eveniet tempora distinctio a",
"completed": true
}
响应的每个todo项都有已完成的属性,因此您可以使用该属性
这就是你要做的:
var vm=new Vue({
el:“#应用程序”,
数据(){
返回{
待办事项:[]
}
},
方法:{
getTodo:function(){
axios.get()https://jsonplaceholder.typicode.com/todos')
。然后((响应)=>{
this.todos=response.data;
})
},
切换完成:功能(todo){
todo.completed=!todo.completed;
}
}
})
显示待办事项
{{todo.title}
任务状态:{{todo.completed?'completed':'Active'}
isActive
是针对整个实例的,而不是针对每个单独的todo
您需要做的是通过映射响应数据或仅使用响应数据的completed
属性来填充todo列表
{
"userId": 10,
"id": 193,
"title": "rerum debitis voluptatem qui eveniet tempora distinctio a",
"completed": true
}
响应的每个todo项都有已完成的属性,因此您可以使用该属性
这就是你要做的:
var vm=new Vue({
el:“#应用程序”,
数据(){
返回{
待办事项:[]
}
},
方法:{
getTodo:function(){
axios.get()https://jsonplaceholder.typicode.com/todos')
。然后((响应)=>{
this.todos=response.data;
})
},
切换完成:功能(todo){
todo.completed=!todo.completed;
}
}
})
显示待办事项
{{todo.title}
任务状态:{{todo.completed?'completed':'Active'}
使用axios
API,我得到TODO,并实际循环到各个TODO上,并对所有TODO应用isActive
道具。
将todo'id
传递给方法时,现在可以通过toggleTodo
切换这些道具。:-)
请注意,我已经在ul
上应用了v-if=“todo.isActive”
,如果您想应用一些样式,例如转换等,这也可以转换为:class=“{active:todo.isActive}”
通过使用这种方法,您可以使用相同的逻辑来创建方法,例如completeTodo
和removeTodo
等
为了显示/隐藏实际的完整列表,我添加了一个showList
prop
我注意到您正在使用v-bind
和v-on
-这绝对有效,但VUE^2.0可以处理:-)
我还注意到您正在为HTML属性使用单引号。。。虽然这不会破坏您的标记,但我认为最好将它们保留为双引号
var vm=new Vue({
el:“#应用程序”,
数据:{
待办事项:[],
显示列表:错误
},
挂载(){
这个。getTodos()
},
方法:{
getTodos(){
axios.get()https://jsonplaceholder.typicode.com/todos')
。然后(res=>{
res.data=res.data.map(todo=>{
todo.isActive=false
返回待办事项
})
this.todos=res.data
})
},
showTodos(){this.showList=!this.showList},
切换TODO(id){
this.todos=this.todos.map(todo=>{
if(todo.id==id){
todo.isActive=!todo.isActive
}
返回待办事项
})
}
}
})
{{this.showList?'Hide':'Show'}}Todos
切换待办事项
- {{todo.title}
任务状态:{{todo.completed}
.主动{
边框:2倍纯绿;
}
使用axios
API,我得到TODO,并实际循环到各个TODO上,并对所有TODO应用isActive
道具。
将todo'id
传递给方法时,现在可以通过toggleTodo
切换这些道具。:-)
请注意,我已经在ul
上应用了v-if=“todo.isActive”
,如果您想应用一些样式,例如转换等,这也可以转换为:class=“{active:todo.isActive}”
通过使用这种方法,您可以使用相同的逻辑来创建方法,例如completeTodo
和removeTodo
等
为了显示/隐藏实际的完整列表,我添加了一个showList
prop
我注意到您正在使用v-bind
和v-on
-这绝对有效,但VUE^2.0可以处理:-)
我还注意到您正在为HTML属性使用单引号。。。虽然这不会破坏您的标记,但我认为最好将它们保留为双引号
var vm=new Vue({
el:“#应用程序”,
数据:{
待办事项:[],
显示列表:错误
},
挂载(){
这个。getTodos()
},
方法:{
getTodos(){
axios.get()https://jsonplaceholder.typicode.com/todos')
。然后(res=>{
res.data=res.data.map(todo=>{
todo.isActive=false
返回待办事项
})
this.todos=res.data