(四) 组件化高级

1.插槽(slot)的基本使用

A:基本使用: <slot></slot>

B:默认置:<slot><h1>中间可以放默认值</h1></slot>

C:如果有多个值,同时放入到组件进行替换时,一起作为替换元素

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--父组件模版-->
<div id="app">
<zzj1><button>按钮</button></zzj1> <!--组件1加个按钮-->
<zzj1>长安镖局</zzj1> <!--组件2加个长安镖局-->
<zzj1><h1>预留插槽后中间可以随便放</h1></zzj1> <!--组件3加个h1标签-->
<zzj1></zzj1> <!--组件4显示默认值--> </div>
<!--子组件模版 -->
<template id="zzjmb">
<div>
<h2>{{title}}</h2>
<!--预留插槽,以便扩展组件,组件中抽取共性,把不同的预留在插槽-->
<!--<slot></slot>-->
<slot><h1>中间可以放默认值</h1></slot>
</div>
</template>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
// root根组件(父组件)
const app = new Vue({
el: '#app',
// 创建注册子组件
components: {
zzj1: {
template: '#zzjmb',
data() {
return {
title: '子组件data中的数据'
}
},
}
}
})
</script>
</body>
</html> 插槽(slot)的基本使用

插槽(slot)的基本使用

 2.具名插槽(slot)的使用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--父组件模版-->
<div id="app">
<zzj1><button>按钮</button></zzj1> <!--替换默认插槽-->
<zzj1><button slot="left">替换左边</button></zzj1> <!--替换左边插槽-->
</div>
<!--子组件模版 -->
<template id="zzjmb">
<div>
<h2>{{title}}</h2>
<!--具名插槽-->
<slot name="left"><span>左边</span></slot>
<slot name="center"><span >中间</span></slot>
<slot name="right"><span>右边</span></slot>
<slot ><span>默认</span></slot>
</div>
</template>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
// root根组件(父组件)
const app = new Vue({
el: '#app',
// 创建注册子组件
components: {
zzj1: {
template: '#zzjmb',
data() {
return {
title: '子组件data中的数据-具名插槽'
}
},
}
}
})
</script>
</body>
</html> 具名插槽(slot)的使用

具名插槽(slot)的使用

3.变量编译的作用域

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--父组件模版-->
<div id="app">
<!--执行isshow会在当前模版中查找-->
<zzj1 v-show="isshow"></zzj1>
</div>
<!--子组件模版 -->
<template id="zzjmb">
<div>
<h2>{{title}}</h2>
</div>
</template>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
// root根组件(父组件)
const app = new Vue({
el: '#app',
data: {
title:'我是父组件',
isshow:true
},
// 创建注册子组件
components: {
zzj1: {
template: '#zzjmb',
data() {
return {
title: '子组件data中的数据-编译的作用域',
isshow: false,
}
},
}
}
})
</script>
</body>
</html> 变量编译的作用域

变量编译的作用域

4.作用域插槽 (父组件替换插槽的标签,但是内容由子组件来提供)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body><!--作用域插槽==>父组件替换插槽的标签,但是内容由子组件来提供-->
<!--父组件模版-->
<div id="app">
<zzj1><span slot="left" >子组件中展示的格式:</span></zzj1> <!--替换左边具名插槽-->
<zzj1>
<!--使用插槽的数据外面可以是template标签,也可以是其它标签-->
<span slot="left">父组件中展示的格式后面有"-":</span>
<template slot-scope="fyuyan1"> <!--用slot-scope接收子组件传的数据,后面变量名自定义-->
<span v-for="i in fyuyan1.data">{{i}} - </span><!--用变量名.data来使用数据-->
</template>
</zzj1>
<zzj1>
<span slot="left">父组件中展示的格式去掉后面的"-":</span>
<div slot-scope="fyuyan2">
<span>{{fyuyan2.data.join('-')}}</span><!--用join函数来展示-->
</div>
</zzj1>
</div>
<!--子组件模版 -->
<template id="zzjmb">
<div>
<ul>
<slot name="left"><span>左边</span></slot>
<slot :data="yuyan"><li v-for="i in yuyan">{{i}}</li></slot><!--自定义绑定名data,来绑定发射子组件的数据-->
</ul>
</div>
</template>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {},
components: {
zzj1: {
template: '#zzjmb',
data() {
return {
yuyan:['python','go','vue'],
title: '子组件data中的数据-编译的作用域',
}
},
}
}
})
</script>
</body>
</html>

作用域插槽

Vue学习笔记-Vue.js-2.X 学习(四)

Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级的更多相关文章

  1. Vue学习笔记-Vue.js-2.X 学习(六)===>脚手架Vue-CLI(项目说明-Babel)

    五  Vue学习-vue-cli脚手架学习(创建只选一个选项:Babel) 1. 项目目录说明 node_modules : 包管理文件夹 public : 静态资源 src : 源代码 gitign ...

  2. Vue学习笔记-Vue.js-2.X 学习(四)===>脚手架Vue-CLI(基本工作和创建)

    (五) 脚手架Vue-CLI 一 Vue-CLI前提(nodejs和webpack) 二  Vue学习-nodejs按装配置,Node.js 就是运行在服务端的 JavaScript. 1. 去nod ...

  3. Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发

    ===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...

  4. Vue学习笔记-Vue.js-2.X 学习(一)===>基本知识学习

    一  使用环境: windows 7 64位操作系统 二  IDE:VSCode/PyCharm 三  Vue.js官网: https://cn.vuejs.org/ 四  下载安装引用 方式1:直接 ...

  5. Vue学习笔记-Vue.js-2.X 学习(五)===>脚手架Vue-CLI(PyCharm)

    Vue项目在pycharm中配置 退出运行: ctrl+c Vue学习笔记-Vue.js-2.X 学习(六)===>脚手架Vue-CLI(项目说明)

  6. 【学习笔记】jQuery的基础学习

    [学习笔记]jQuery的基础学习 新建 模板 小书匠  什么是jQuery对象? jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果 ...

  7. 【学习笔记】JavaScript的基础学习

    [学习笔记]JavaScript的基础学习 一 变量 1 变量命名规则 Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头.例如: var myTestValue = 0, mySeco ...

  8. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  9. 20145213《Java程序设计学习笔记》第六周学习总结

    20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...

随机推荐

  1. COS数据处理WebP压缩 | 减少70%图像大小

    当前网络中,图片仍是占用流量较大的一部分,在网站的视觉效果和加载速度之间,我们始终面临着两难选择. 一个网站的内容,不仅仅只有文字,图片.动图.视频等众多元素都在帮助用户从我们的网站获取更多的信息,当 ...

  2. Neo4j 导入 Nebula Graph 的实践总结

    摘要: 主要介绍如何通过官方 ETL 工具 Exchange 将业务线上数据从 Neo4j 直接导入到 Nebula Graph 以及在导入过程中遇到的问题和优化方法. 本文首发于 Nebula 论坛 ...

  3. 搭建tdh平台

    1.卸载tdh平台(见tdh集群卸载文件夹) 在manager节点执行chmod +x uninstall.sh (非root用户执行sudo chmod +x uninstall.sh)开始卸载TD ...

  4. Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) B. Journey Planning(映射)

    题意: 已知 n 所城市(从 1 至 n 编号)及其美丽值,选取一条旅行路线,满足路线中两两城市美丽值之差等于编号之差,求所有旅行路线中美丽值的最大值. 思路: 美丽值与编号作差,差值为键,映射累加 ...

  5. map详细的复习

    map 就是一种基于自建红黑树的 一一对应的hash 的容器 通过模板方式实现  map<type,type> mapname: 前边是key 后边是 vale 转载如下作者:sevenc ...

  6. 树链剖分(附带LCA和换根)——基于dfs序的树上优化

    .... 有点懒: 需要先理解几个概念: 1. LCA 2. 线段树(熟练,要不代码能调一天) 3. 图论的基本知识(dfs序的性质) 这大概就好了: 定义: 1.重儿子:一个点所连点树size最大的 ...

  7. Codeforces Round #479 (Div. 3) F. Consecutive Subsequence (DP)

    题意:给你一个长度为\(n\)的序列,求一个最长的\({x,x+1,x+2,.....,x+k-1}\)的序列,输出它的长度以及每个数在原序列的位置. 题解:因为这题有个限定条件,最长序列是公差为\( ...

  8. git忽略规则以及.gitignore文件不生效解决办法

    正文 Git忽略规则: #此为注释 – 内容被 Git 忽略 .sample # 忽略所有 .sample 结尾的文件 !lib.sample # 但 lib.sample 除外 /TODO # 仅仅 ...

  9. 踏上Revit二次开发之路 2 从“HelloWorld”入手

    2 从"HelloWorld"入手 在欧特克的官方网页上有个叫<My First Plug-in Training>的项目,号称可以让一个完全没有编程基础的人照着做出一 ...

  10. hutool学习总结

    1. 为什么要学习Hutool的使用 Hutool官网 中文写的已经很清楚了 Hutool是一款强力的工具类.封装了工作开发中一些常见的功能操作.避免重复造轮子,使用它大大提高的开发效率. 2. Hu ...