首页 > 其他分享 >Vue学习笔记3--组件嵌套

Vue学习笔记3--组件嵌套

时间:2024-03-06 18:33:42浏览次数:26  
标签:school Vue -- 嵌套 student 组件

组件嵌套

示例一:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>非单文件组件--全局注册</title>
  <script type="text/javascript" src="../../Js/vue.js"></script>
</head>

<body>
  <div id="root">
    {{msg}}
    <school></school>
    <hr>
    <student></student>

  </div>

</body>

</html>
<script type="text/javascript">
  Vue.config.productionTip = false
  //#region 创建组件(被嵌套的组件需要定义在组件之前),即:先准备后注册
  const student = Vue.extend({
    template: '<div><h3>学生姓名:{{studentName}}</h3> <h3> 学生年龄:{{ studentAge }}</h3></div>',
    data () {
      return {
        studentName: '心仪',
        studentAge: 6
      }
    }
  })

  const school = Vue.extend({
    template:
      '<div>'
      + ' <h3>学校名称:{{schoolName}}</h3>'
      + ' <h3> 学校地址:{{ schoolAddress }}</h3>'
      + '<student></student>'
      + ' <button @click="showInfo">点我提示学校信息</button>'
      + '</div>',
    data () {
      return {
        schoolName: '希望小学',
        schoolAddress: '西安/110号/希望小学',
      }
    },
    methods: {
      showInfo () {
        alert(this.schoolName + '/' + this.schoolAddress)
      }
    },
    // 注册嵌套组件,局部
    components: {
      student
    }
  })

  //#endregion

  //#region  root1 局部注册
  new Vue({
    el: '#root',
    data: {
      msg: '你好vue 组件|可复用',
    },
    // ---------------注册组件|局部注册---------------
    components: {
      // school: school,
      // student: student,
      // 上方代码等价于--可简写为如下代码
      school,
      student,

    },

  })

  //#endregion

</script>

 示例二:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>非单文件组件--全局注册</title>
  <script type="text/javascript" src="../../Js/vue.js"></script>
</head>

<body>
  <div id="root">
    <!--  {{msg}}
    <school></school>
    <hr>
    <temp></temp>
    <hr>
    <student></student> -->


    <!-- 容器中也可以 不写标签,但需在Vue中添加 template
      template: '<app></app>',
     -->
    <!-- <app></app> -->
  </div>

</body>

</html>
<script type="text/javascript">
  Vue.config.productionTip = false
  //#region 创建组件(被嵌套的组件需要定义在组件之前),即:先准备后注册
  const student = Vue.extend({
    template: '<div><h3>学生姓名:{{studentName}}</h3> <h3> 学生年龄:{{ studentAge }}</h3></div>',
    data () {
      return {
        studentName: '心仪',
        studentAge: 6
      }
    }
  })

  const temp = Vue.extend({
    template:
      '<div>'
      + '<h2>你好 Vue 组件嵌套</h2>'
      + '</div>',
  })

  const school = Vue.extend({
    template:
      '<div>'
      + ' <h3>学校名称:{{schoolName}}</h3>'
      + ' <h3> 学校地址:{{ schoolAddress }}</h3>'
      + '<student></student>'
      + ' <button @click="showInfo">点我提示学校信息</button>'
      + '</div>',
    data () {
      return {
        schoolName: '希望小学',
        schoolAddress: '西安/110号/希望小学',
      }
    },
    methods: {
      showInfo () {
        alert(this.schoolName + '/' + this.schoolAddress)
      }
    },
    // 注册嵌套组件,局部
    components: {
      student
    }
  })


  const app = Vue.extend({
    template:
      '<div>' +
      '<school></school>'
      + '<temp></temp>'
      + '</div>',
    components: {
      school,
      temp,
    }
  })

  //#endregion

  //#region  root1 局部注册
  new Vue({
    template: '<app></app>',//等价于在 容器中 添加标签
    el: '#root',
    data: {
      msg: '你好vue 组件|可复用',
    },
    // ---------------注册组件|局部注册---------------
    components: {
      // school: school,
      // student: student,
      // 上方代码等价于--可简写为如下代码
      // school,
      // student,
      // temp,
      app
    },

  })

  //#endregion

</script>

 

  

标签:school,Vue,--,嵌套,student,组件
From: https://www.cnblogs.com/YYkun/p/18057169

相关文章

  • Java登陆第三十二天——AJAX和异步
    AJAX菜鸟教程Ajax全名AsynchronousJavaScriptandXML(异步的JavaScript和XML)通过ajax可以向服务器发送异步请求。ajax最大的优势:在不刷新整个页面的情况下,可以与服务器产生数据交互,从而完成网页的局部更新。ajax并不是新的语言,和json一样。都是一种标准。常见的ajax案......
  • 反向解析 无名分组 有名分组
    无名分组与有名分组:有名分组和无名分组都是为了获取路径中的参数,并传递给视图函数,区别在于无名分组是以位置参数的形式传递,有名分组是以关键字参数的形式传递。强调:无名分组和有名分组不要混合使用无名分组:分组:就是给某一段正则表达式用小括号扩起来无名分组就是将括号内正......
  • XQuartz 使用方法
    XQuartz就是macOS下的X11,部分Linux程序安装时需使用到图形界面,可以选择这个解决方案。安装:brewinstall--caskxquartz安装之后,在终端输入xquartz应该就能启动XQuartz:xquartz启动之后没有什么效果,只是能从程序坞看到有程序被打开了。此时打开一个新的终端页面,输......
  • Vue3计算属性与监听
    接上篇文章vue学习笔记 https://www.cnblogs.com/jickma/p/16523795.html在之前中介绍了vue3的特性与响应式数据定义,新的双向绑定,模版等与vue2的差别。在vue2中很重要的两个很重要的东西就是计算属性与监听在vue3中,同样存在只是写法略有不同。5,计算属性......
  • IDEA自定义注释
    注释模板配置首先打开IDEA设置Settings...(Windows快捷键:Ctrl+Alt+S,Mac快捷键:command+,)--->Editor--->LiveTemplates--->点击右侧加号"+"设置以下六处相应的内容Abbreviation:快捷缩略词,可以输入数值、字母、符号,到时配合/*使用(依模板内容而定),例......
  • elementui el-select多选进行初始化后,重新选择选不上问题完美解决。
    问题描述:elect多选进行初始化后,重新选择选不上?这个问题之前也遇到了,但是一直都是采用两个变量解决的。今天百度终于找到一个好的解决方法。   初始化后,点击选项选择不上,后来加了@change=“selectChangeMethod”进行了强制刷新,然后完美解决。  ====================......
  • doxygen/addon/doxywizard/wizard.cpp
    Step2::Step2(Wizard*wizard,constQHash<QString,Input*>&modelData) :m_wizard(wizard),m_modelData(modelData){ QRadioButton*r; QVBoxLayout*layout=newQVBoxLayout(this); //--------------------------------------------------- m_extractMo......
  • NGUI学习笔记4.0
    EventListener和EventTrigger控件自带组件的局限性其实我们常见的复合控件只提供一些简单的事件监听,如按钮有点击抬起的监听,对长按等其他交互方式的事件监听不大支持。NGUI的监听函数给NGUI对象添加Collider,在其挂载的脚本中编写对应的NGUI的函数,在运行时候会通过反射来进行匹......
  • 消除js计算误差,消除使用减号“-”或加号“+”的计算误差
    做条形图统计计算时,往往js计算“-”后再无法相“+”等于100%或者说等于1,后来发现是js使用减号“-”或加号“+”计算有误差相关代码:this.standard=99.68this.nonstandard=100-this.standardconsole.info("this.nonstandard:",this.nonstandard)//进一法this.nonstandard......
  • 基本操作之——tuple增删查改操作
    1.tuple增加操作——tuple_insertOriginalTuple:=[0,1,2,3,4,5]*指定索引处插入一个元素tuple_insert(OriginalTuple,3,'x',InsertSingleValueA)*HDevelop执行同样操作InsertSingleValueB:=insert(OriginalTuple,3,'x') **指定索引处插入多个元素tuple_insert(Or......