vue中组件的嵌套(1)

   1.组件的嵌套

    组件嵌套:把组件与组件嵌套在一起,

 

    在父组件下的模板中,以标签的形式调用子组件。

  2 . 组件通信

    组件通信 : 就是把同一个信息可以在不同的组件中共用

    方式一 :   组件 父传子 用 Props    父组件将信息传给子组件,从而子组件获得父组件的信息   

      父组件和子组件,之间靠子组件标签取得关联,在子组件标签上所有的属性构成的集合在子组件的props属性可以接受到。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>组件-父传子</title>
        <script type="text/javascript" src="js/vue.js">    </script>
    </head>
    <body>
        <div id="app">
            <!-- 调用组件标签 -->
            <heads></heads>
        </div>
    </body>
</html>
<template id="temp">
     <!-- 创建模板 -->
     <div> <!-- 定义模板只能有一个顶层标签 -->
         <h3>这是我的第一个模板</h3>
         <p>{{msg}}</p> <!-- 组件的数据放在模板里  -->
         <son :tab = "msg"></son> <!-- 组件标签 :tab 绑定动态属性 msg是数据 -->
     </div>
</template>
<script type="text/template" id="temp1">
    <!-- 子组件的模板 -->
    <div>
        <h2>good moring {{tab}}</h2>
        <p>{{msg}} {{tab}}</p>
    </div>
</script>
<script type="text/javascript">
    //  定义子组件
    let Son = {
        template : "#temp1",
        // 每个组件都有一个props属性,这个属性是该组件的组件标签身上所有属性构成的集合
        props : ["tab"],
        data : function (){
            return {
                msg : "这是我的子组件",
            }
        },
        mounted(){
            this.tab = this.$props.tab;
        }
    }
    //  定义组件
    let Heads = {  // 组件名必须大写,不能使用h5标签
        template : "#temp", // 模板和组件通过id相关联
        data : function (){ // 组件的data是一个函数
            return{
                msg : "hello Miss wang!",
            }
        },
        components : {
            son : Son, // 注册子组件
        }
    }
    //  app是最大的根组件
    let app = new Vue({
        el : "#app",
        data : {},
        components : {
            heads : Heads, // 注册组件
        }
    });
</script>

    方式二 :  组件 父取到子的信息(即 子传父)

          refs  是组件模板下,所有子组件标签构成的集合。

      1. 在子组件的标签上添加 ref 属性

      

        2.在父组件下使用this.$refs 就可以看到子组件标签的所有信息

      

    方式三  :  自定义事件--子传父

      人为触发的事件,创建的方法是this.$emit

        1. 在子组件的模板中添加事件名与事件方法(注意事件名与事件方法),在对应的组件模板中用$emit定义事件

        

          $emit定义事件

         

          2. 在子组件标签下 用v-on 或 @ 去接受自定义的事件

          

          3.写事件方法

         

      实例  :  自定义事件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>自定义组件-子传父</title>
        <script type="text/javascript" src="js/vue.js">    </script>
    </head>
    <body>
        <div id="app">
            <!-- 调用组件标签 -->
            <heads></heads>
        </div>
    </body>
</html>
<template id="temp">
     <!-- 创建模板 -->
     <div> <!-- 定义模板只能有一个顶层标签 -->
         <h3>这是我的第一个模板</h3>
         <p>{{msg}}</p> <!-- 组件的数据放在模板里  -->
         <son @switch = "dd"></son> <!-- 接受事件 -->
     </div>
</template>
<script type="text/template" id="temp1">
    <!-- 子组件的模板 -->
    <div>
        <h2>good moring</h2>
        <p>{{msg}}</p>
        <button @click = "ff">点击提交</button>
    </div>
</script>
<script type="text/javascript">
    //  定义子组件
    let Son = {
        template : "#temp1",
        data : function (){
            return {
                msg : "这是我的子组件",
            }
        },
        methods : {
            ff : function(){
                // 定义一个事件 $emit("事件名",数据)
                this.$emit("switch",this.msg);
            }
        },
    }
    //  定义组件
    let Heads = {  // 组件名必须大写,不能使用h5标签
        template : "#temp", // 模板和组件通过id相关联
        data : function (){ // 组件的data是一个函数
            return{
                msg : "hello Miss wang!",
            }
        },
        methods : {
            dd : function(res){
                this.msg = res;
            }
        },
        components : {
            son : Son, // 注册子组件
        }
    }
    //  app是最大的根组件
    let app = new Vue({
        el : "#app",
        data : {

        },
        components : {
            heads : Heads, // 注册组件
        }
    });
</script>

    

       

  

原文地址:https://www.cnblogs.com/461770539-qq/p/9362906.html

时间: 2024-10-07 01:07:28

vue中组件的嵌套(1)的相关文章

vue中组件间的通信,父传子,子传父

参考文章 :https://www.cnblogs.com/yszblog/p/10135969.html 1 父传子 子组件Vue 父组件 注册子组件 子组件在props中创建一个属性,用以接收父组件传过来的值 父组件中注册子组件 在子组件标签中添加子组件props中创建的属性 把需要传给子组件的值赋给该属性 2 通过$emit  子组件向父组件传值 2.1 子组件Vue 2.2 父组件 2.3 父组件监听子组件发射的事件名 子组件中需要以某种方式例如点击事件的方法来触发一个自定义事件 将需要

vue中组件的四种方法总结

希望对大家有用 全局组件的第一种写法 html: <div id = "app"> <show></show></div> js: 第一步:实例化Vue对象 var app = new Vue({ el:"#app" })     第二步:定义组件 var myComponent = Vue.extend({ template: '<h1>vue全局组件写法一</h1>' });     第三步

vue中组件通信

前面看官方文档一直不能理解在子组件模板中引用父组件的数据,看了很多遍也是模糊,今天无意中看到一个demo,突然就明白了一些. <div id="componentPhone"> <!--在子组件模板中引用父组件的数据,数据是article,通过绑定的detail属性--> <my-component v-bind:detail="article"></my-component></div> var cp =

VUE中组件的使用

关于vue组件引用 使用Nodejs的方法 被引用的组件要暴露 module.exports={}; 引用时 用 var abc= require("组件的路径") 然后 就可以用abc点出来组件中的东西 属性或者方法 代码 ``` //cal.js的内容 一定要包裹在对象中 还要是顶级作用域 如不能再函数值暴露 没用 module.exports={ sayHi:function(){ console.log("你好啊") } }; //main.js 引用后就可

Vue 中组件概念

1 为了能在模板中使用,组件必须先注册以便 Vue 能够识别.这里有两种组件的注册类型:全局注册和局部注册. 全局注册是通过Vue.component 来向Vue注册,例子 Vue.component('my-component-name', { // ... options ... }) 全局注册的组件可以用在其被注册之后的任何 (通过 new Vue) 新创建的 Vue 根实例,也包括其组件树中的所有子组件的模板中. 2 通过 Prop 向子组件传递数据 Prop 是你可以在组件上注册的一些

vue中组件通讯--子到父

步骤: 父组件提供一个方法 这个方法是子组件调用的,数据通过方法的参数拿到 将这个方法传递给子组件 由子组件触发这个方法,将要传递的数据作为方法的参数传递 <div id="app"> <h1>{{ age }}</h1> <!-- 2 给子组件传递一个自定义事件 getmsg ,它的值是 getChildMsg 方法 --> <child @getmsg="getChildMsg"></child&

vue中组件间的传参

1.父传子 父组件准备一个数据,通过自定义属性给子组件赋值,进行传递 在子组件中通过 props 属性来接收参数 <body> <div id="app"> <son passdata="msg"></son> </div> </body> <script> Vue.component('son', { template: '<div>父组件的数据为:{{ passdat

vue中组件之间的传值

按照对象分类: 一.父子组件之间的传值 1.使用props和$emit 2.在引入的子组件中使用ref,通过this.$refs.xxx.方法/值来获取子组件中的方法或者值 3.子组件中使用this.$parent来获取父组件中的值或者方法 4.父组件中使用this.$children来获取子组件中的值或者方法 二.兄弟组件中的传值 1.使用eventBus作为中间件,然后使用$emit去抛出事件,使用$on去监听事件 这里要注意一些事项:a.bus.$emit在beforeDestroy中去触

Vue中组件(.vue文件)

Vue组件 组件的构成 一个.vue文件就是一个组件 组件都是由三部分组成:html结构(html结构都是在template标签中).js逻辑.css样式 1)template只能解析一个根标签 2)js逻辑都是在script标签中,必须设置导出,export default {...} 3)css样式都是在style标签中,必须设置scoped属性,是样式组件化 <template> <div class="first-cp"> <h1>第一个组件