vue2.0 computed和v-bind:class

<style>
    .completed{
        color:#1ec01e;
        text-decoration: line-through;
    }
</style>

<div id="app">
    <h1>@{{todoCount}}</h1> {{--实时计算computed--}}
    <ul>
        <li v-bind:class="{'completed':todo.completed}" v-for="(todo,index) in todos">@{{todo.title}} {{--v-bind:class completed为true改变为顶部style的样式--}}
            <button  v-bind:class="[todo.completed ? 'btn-danger' : 'btn-success']" @click="toggleCompletion(todo)">{{--按钮绑定toggleCompletion(todo)事件--}}
            @{{todo.completed ? 'undo' : 'completed'}}</button>
            <button @click="deleteTodo(index)">delete</button>
        </li>
    </ul>

    <form  @submit.prevent="addTodo(newTodo)">
        <input type="text" v-model="newTodo.title">
        <button value="submit">add</button>
    </form>
</div>
<script>
    new Vue({
        el:"#app",
        data:{
            todos:[{id:1,title:1,completed:false},{id:2,title:2,completed:false}],
            newTodo:{id:null,title:'',completed:false}//先定义 completed为 false
        },
        computed:{ todoCount(){ return this.todos.length;}  //实时计算todoCount的值
        },
        methods:{
            addTodo(newTodo){
        this.todos.push(newTodo)
        this.newTodo={id:null,title:''}//重置输入框内容为空
            },
        deleteTodo(index){
        this.todos.splice(index,1)
            },
        toggleCompletion(todo){
                todo.completed=!todo.completed
            },//触发false变true

    },
    })
</script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容