vue 实现TodoList

vue 实现TodoList

  1. 方法一

head引入

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>

主体

<div id="app">
        <input type="text" v-model=inputValue>//对输入框输入数据进行双向绑定
        <button @click=handleBtnClick>提交</button>//按钮绑定click=handleBtnClick方法
        <ul>
             <li v-for="item in list">{{item}} </li>
        </ul>
    </div>
    <script>
        var app = new Vue({
            el: "#app",
            data: {
                list: [],
                inputValue: ' '
            },
            methods: {
                handleBtnClick: function () {
                    this.list.push(this.inputValue)
                    this.inputValue = ' '
                }
            },
        })
    </script>

2.方法二 使用全局组件component
主体

 <div id="app">
        <input type="text" v-model=inputValue>
        <button @click=handleBtnClick>提交</button>
        <ul>
            <todo-item :content="item" v-for="item in list"></todo-item>
        </ul>
    </div>
    <script>
        var app = new Vue({
            el: "#app",
            data: {
                list: [],
                inputValue: ''
            },
            methods: {
                handleBtnClick: function () {
                    this.list.push(this.inputValue)
                    this.inputValue = ''
                }
            },
        })
  Vue.component('TodoItem', {
            props: ['content'],
            template: "<li>{{content}}<li>"
        }) 
    </script>

3.使用局部组件

 <div id="app">
        <input type="text" v-model=inputValue>
        <button @click=handleBtnClick>提交</button>
        <ul>
            <todo-item v-bind:content="item" v-for="item in list"></todo-item>
        </ul>
    </div>
    <script>
        var TodoItem = {//局部组件
            props: ['content'],
            template: '<li>{{content}} </li>'
        }
        var app = new Vue({
            el: "#app",
            components: {//声明局部组件
                'TodoItem': TodoItem
            },
            data: {
                list: [],
                inputValue: ''
            },
            methods: {
                handleBtnClick: function () {
                    this.list.push(this.inputValue)
                    this.inputValue = ''
                }
            },
        })

    

    </script>

实现点击某项即删除

 <div id="app">
        <input type="text" v-model=inputValue>
        <button @click=handleBtnClick>提交</button>
        <ul>
            <todo-item v-bind:content="item" @delete="handleDel" v-for="(item,index) in list" v-bind:index="index"
                :key="index"></todo-item>
        </ul>
    </div>
    <script>
        var TodoItem = {
            props: ['content', 'index'],
            template: '<li @click="handleClickDel">{{content}} </li>',
            methods: {
                handleClickDel: function () {
                    this.$emit("delete", this.index);
                }
            }
        }
        var app = new Vue({
            el: "#app",
            components: {
                'TodoItem': TodoItem
            },
            data: {
                list: [],
                inputValue: ''
            },
            methods: {
                handleBtnClick: function () {
                    this.list.push(this.inputValue)
                    this.inputValue = ''
                },
                handleDel: function (index) {
                    this.list.splice(index, 1)
                }
            },
        })

    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值