Vue组件学习

1.组件是指页面上的某一部分,当创建一个大型的项目时,项目可以被分为很多组件,维护时就变的简单多了。
2.Vue组件分为全局组件和局部组件,局部组件需在实例中声明(注册)。
全局组件声明简例:

Vue.component('todo-item',{
            template:'<li>item</li>' 
        })

局部组件声明简例:

//声明一个变量等于一个对象,对象里面给一个模板
        var TodoItem={
            template:'<li>item</li>'
        }
        new Vue({
            el:"#root",
            components:{
                'todo-item':TodoItem
            }
  //如不在父组件中注册局部组件不可以使用

3.组件与实例的关系:每一个组件都是一个Vue实例,反过来每一个Vue实例也可以称为一个组件,根实例的模板是挂载点里的所有内容

4.Vue组件之间通信方式:父组件通过属性的形式向子组件传值;

<body>
    <div id="root">
       <input v-model="inputValue">
       <button @click="handleSubmit">提交</button>
       <ul>
        <!-- <li v-for="(item,index) of list" :key="index">{{item}}</li> -->
       <todo-item v-for="(item,index) of list" :key="index" :content="item"></todo-item>
       </ul>
    </div>
    <script>
        Vue.component('todo-item',{
            props:['content'],//props属性值可以是一个数组,用于接收外部属性
            template:'<li>{{content}}</li>'//使用插值表达式显示content
        })
        new Vue({
            el:"#root",
            data: {
                 inputValue:'',
                 list: []
            },
            methods:{
                handleSubmit:function(){
                    this.list.push(this.inputValue)
                    this.inputValue=''
                }
            }
        })
    </script>
</body>
这段代码实现了一个简单的todolist功能,即在表单中输入内容点击提交显示在无序列表中;

子组件通过发布订阅模式来与父组件通信:emit()方法;

 ```
this.$emit('delete',this.index) 
 <ul>
       <todo-item v-for="(item,index) of list" :key="index" :content="item"
        :index="index" v-on:delete="handleDelete"></todo-item>
       </ul>
handleDelete:function(index){    //声明一个形参用于接收实参
                    this.list.splice(index,1)     
                }

这段代码通过emit()方法实现了当点击当前列表项时就将当前列表项删除。

猜你喜欢

转载自blog.csdn.net/qq_41611820/article/details/82470119