Vue.js专区

(一) Vue组件之间的通信(入门)

2018-06-30  本文已影响15人  人生苦短啊
实现一个TodoList的功能

输入文字点击提交会在下面显示,单击下面任意一个数据会删掉对应的数据


可以拿来直接用

<body>
    <div id="app">
        <m-item></m-item>
        <div>
            <input type="text" v-model="todoValue">
            <button @click="handleBtnClick">提交</button>
        </div>
        <ul>
            <todo-item v-bind:content="item"
                       v-bind:index="index"
                       v-for="(item, index) in list"
                       @delete="handleItemDelete">

            </todo-item>
        </ul>
    </div>

  </body>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <script type="text/javascript">
    //全局组件
    Vue.component('m-item', {
        template: '<div>全局组件</div>'
    })
    // 子组件
    var TodoItem = {
        props: ['content', 'index'],
        template: "<li @click='handleDelete'> {{content}} </li>",
        methods:{
            handleDelete:function(){
                this.$emit("delete", this.index)     //子组件绑定事件,父组件响应
            }
        }
    }

    // 父组件
    var app = new Vue({
      el: '#app',
      components:{
        TodoItem: TodoItem         //绑定子组件
      },
      data: {
        list: [],
        todoValue: ""
      },
      methods:{
        handleBtnClick: function(){
            this.list.push(this.todoValue)      //放入数组
            this.todoValue = ""
        },
        handleItemDelete: function(index){
            this.list.splice(index, 1)          //删除对应indexx
        }
      }
    })
  </script>
标签解释:

@click : 可以绑定点击事件
v-bind : 绑定数据,用于和js交互
v-for : for循环语句 item 是每次循环的对象, index是循环的索引
props : 用于接收父组件传来的内容
v-model : 实现表单输入和应用状态之间的双向绑定

上一篇下一篇

猜你喜欢

热点阅读