所以我创建了一个基本的任务列表,我想在<li>点击时将它们设置为完成。当它被点击时,我希望将一个类添加到<li>点击的那个中。我无法通过文档弄清楚这一点,所以我希望有人可以帮助我:D
我已经拥有的代码:
<transition-group name="list">
<li class="list-item list-group-item" v-for="(task, index) in list" :key="task.id" v-on:click="finishTask(task.id)" >
@{{ task.text }}
<button @click="removeTask(task.id)" class="btn btn-danger btn-xs pull-right">Delete</button>
</li>
</transition-group>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
// get the csrf token from the meta
var csrf_token = $('meta[name="csrf-token"]').attr('content');
export default {
data() {
return {
list: [],
taskInput: {
id: '',
text: ''
}
};
},
// So the tasks will show when the page is loaded
created() {
this.allTasks();
},
methods: {
// get all the existing tasks
allTasks() {
axios.get('tasks').then((response) => {
this.list = response.data;
});
},
// create a new task
createTask() {
axios({
method: 'post',
url: '/tasks',
data: {
_token: csrf_token,
text: this.taskInput.text,
},
}).then(response => {
this.taskInput.text = '';
this.allTasks();
});
},
// remove the tasks
removeTask(id) {
axios.get('tasks/' + id).then((response) => {
this.allTasks();
});
},
finishTask(id) {
axios({
method: 'post',
url: 'tasks/done/' + id,
data: {
_token: csrf_token,
data: this.taskInput,
},
}).then(response => {
this.allTasks();
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我应该如何使用 jquery 而不是 vue js,我希望这不是一个愚蠢的问题:D
您可以使用事件参数。这是在您的点击方法中自动提供的。
onListClicked(event) {
event.target.className += " myClass";
}
Run Code Online (Sandbox Code Playgroud)
我在这里为您做了一个演示:https ://jsfiddle.net/6wpbp70g/
您可以绑定 css 类和样式,将布尔done属性添加到您的便笺对象中,默认值为false,当您单击便笺时,将其done属性更改为true. 这是一个例子
new Vue({
el:"#app",
data:{
notes: [
{ text: "First note", done:false },
{ text: "Second note", done:false },
{ text: "Third note", done:false },
{ text: "Fourth note", done:false },
{ text: "Fifth note", done:false }
]
},
methods:{
finishNote(note){
// send your api request
// then update your note
note.done = true
}
}
})Run Code Online (Sandbox Code Playgroud)
.done{
background-color:green;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.min.js"></script>
<div id="app">
<ul>
<li v-for="note in notes" :class="{done:note.done}" @click="finishNote(note)">{{note.text}}</li>
</ul>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22513 次 |
| 最近记录: |