回归前端学习第16天——VUE实现ToDoList

用VUE实现一个可以进行增删显示的ToDoList


v-model实现表单绑定 双向数据绑定,组件接收值,界面反馈值的变化

 <input type="text" v-model="inputValue">

监听事件,点击触发,执行函数handleBtnClick

  <button @click="handleBtnClick">提交</button>

自定义组件TODOList,借助变量content.index.实现子组件的数据绑定 ,通过监听事件,点击触发delete事件执行handleItemDelete方法

<todo-list 
                v-bind:content="item"
                v-bind:index="index"
                v-for="(item,index) in list" 
                @delete="handleItemDelete"></todo-list>

通过对象建立子组件,需要在父组件中申明

 var TodoList={
        // 接收子组件传入的数据
        props:['index','content'],
        // 挂载到li标签,通过监听,点击触发事件,执行方法,并将item(content)的值显示出来
        template:"<li @click='handleItemDelete'>{{content}}</li>",
        methods:{
            // 将子组件的事件通过$emit向上传给父组件,当触发delete变量对应的事件时,将index作为参数传递出去
            handleItemDelete:function(){
                this.$emit("delete",this.index);
                // alert('ddd')
            }
}
    }

组件的申明

 var app=new Vue({
        // vue接管dom中的某个标签
        el:'#app',
        // 在父组件中申明子组件
        components:{
            TodoList:TodoList
        },
        data:{
            // 申明组件中出现的内容
         inputValue:'',
         list:[]

        },
        // 实现数据的增加,显示在list中
        methods:{
            handleBtnClick:function(){
                // alert('sss');
                // 表单的数据绑定,添加输入的数据
                this.list.push(this.inputValue);
                this.inputValue=""
            },
            handleItemDelete:function(index){
                // 删除列表中的某一项数据
                this.list.splice(index,1)
                // alert(index)
            }
        }
    })

注意:真正实现这个功能还需要导入一个vue.js的文件,
整体代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Todolist</title>
    <script src='./vue.js'></script>
</head>
<body>
    <div id="app">
        <div>
            <!-- v-model实现表单绑定 双向数据绑定,组件接收值,界面反馈值的变化-->
            <input type="text" v-model="inputValue">
            <!-- 监听事件,点击触发,执行函数 -->
            <button @click="handleBtnClick">提交</button>
        </div>
        <ul>
            <!-- 自定义组件TODOList,借助变量content.index.实现子组件的数据绑定 
                通过监听事件,点击触发delete事件执行handleItemDelete方法-->

            <todo-list 
                v-bind:content="item"
                v-bind:index="index"
                v-for="(item,index) in list" 
                @delete="handleItemDelete"></todo-list>
        </ul>
    </div>
<script>
    // 通过对象建立子组件,需要在父组件中申明
    var TodoList={
        // 接收子组件传入的数据
        props:['index','content'],
        // 挂载到li标签,通过监听,点击触发事件,执行方法,并将item(content)的值显示出来
        template:"<li @click='handleItemDelete'>{{content}}</li>",
        methods:{
            // 将子组件的事件通过$emit向上传给父组件,当触发delete变量对应的事件时,将index作为参数传递出去
            handleItemDelete:function(){
                this.$emit("delete",this.index);
                // alert('ddd')
            }
}
    }
    // 组件的申明
    var app=new Vue({
        // vue接管dom中的某个标签
        el:'#app',
        // 在父组件中申明子组件
        components:{
            TodoList:TodoList
        },
        data:{
            // 申明组件中出现的内容
         inputValue:'',
         list:[]

        },
        // 实现数据的增加,显示在list中
        methods:{
            handleBtnClick:function(){
                // alert('sss');
                // 表单的数据绑定,添加输入的数据
                this.list.push(this.inputValue);
                this.inputValue=""
            },
            handleItemDelete:function(index){
                // 删除列表中的某一项数据
                this.list.splice(index,1)
                // alert(index)
            }
        }
    })
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值