在vue.js组件教程的一开始提及到了is特性

  意思就是有些元素,比如 ul 里面只能直接包含 li元素,像这样:

<ul><li></li>
</ul>
//而不能:
<ul><your-component>
</ul>

  这样就不能复用your-component这个组件了,如果要达到我们的目的,我们就要使用is特性像这样:

<ul><li is="your-component"></li>
</ul>

  组件功能是vue项目的一大特色。组件可以扩展html元素,可以封装可重用的代码,可以增加开发效率。它是自定义元素,vue.js的编译器为它添加特殊功能。有些情况,组件也可以是原生HTML元素的形式,以is特性进行扩展。

  那么is特性究竟是什么呢?有什么用途呢?

1、限制元素

  其实简单的来说,因为vue模板就是dom模板,使用的是浏览器原生的解析器进行解析,所以dom模板的限制也就成为vue模板的限制了,要求vue模板是有效的HTML代码片段。但是由于dom的一些html元素对放入它里面的元素有限制,所以导致有些组件没办法放在一些标签中,比如<ul></ul>  <select></select><a></a> <table></table>等等这些标签中,所以需要增加is特性来扩展,从而达到可以在这些受限制的html元素中使用。例如:

<ul><li is="my-component"></li>
</ul>

  而不能使用下面的方式,因为下面的方式会将自定义组件<my-component>当做无效的内容,导致错误的渲染结果

<ul><my-component></mu-component>
<ul>

  其实两种写法表达的意思是一致,但是第二种写法是不合法的,会导致错误。

2、动态组件

  在我们平时使用vue中的模板的时候,许多时候都是直接定义成一个固定的模板,但是,vue中提供了一个动态模板,可以在任意模板中切换,就是用vue中<component>用:is来挂载不同的组件。

<div id="app" v-cloak><component :is="currentView"></component><button @click="handleChangeView('A')">A</button><button @click="handleChangeView('B')">B</button><button @click="handleChangeView('C')">C</button>
</div>

        var app = new Vue({el: '#app',components:{comA:{template:`<div>组件A</div>`},comB:{template:`<div>组件B</div>`},comC:{template:`<div>组件C</div>`}},data:{currentView:'comA'},methods:{handleChangeView:function(component){this.currentView='com'+component;}}});

  我们在components中注册了三个模板,当我们点击当前按钮的时候,就会将模板切换模板,可以说是非常方便了。

详解vue组件的is特性:限制元素动态组件相关推荐

  1. render注册一个链接组件_详解vue 动态加载并注册组件且通过 render动态创建该组件...

    基于 iview Tabs 组件实现 功能:为每个 tab 动态创建不同的.特定的组件内容,而不需要大量的 import 组件并进行 component 注册 Index.vue import loa ...

  2. vue单文件props写法_详解Vue 单文件组件的三种写法

    详解Vue 单文件组件的三种写法 JS构造选项写法 export defaul { data, methods, ...} JS class写法 @Component export default c ...

  3. dom不刷新 vue 加数据后_详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结...

    如果你发现你自己需要在 vue 中做一次强制更新,99.9% 的情况,是你在某个地方做错了事. 1. vue 无法检测实例被创建时不存在于 data 中的 property 原因:由于 vue 会在初 ...

  4. 实例化vue发生了什么?(详解vue生命周期)

    实例化vue发生了什么?(详解vue生命周期) 本文将对vue的生命周期进行详细的讲解,让你了解一个vue实例的诞生都经历了什么~ 我在Github上建立了一个存放vue笔记的仓库,以后会陆续更新一些 ...

  5. 详解 Vue 目录及配置文件之 build 目录

    详解 Vue 目录及配置文件之 build 目录 1.1 项目目录介绍 目录/文件 说明 详解 build 项目构建(webpack)相关代码 详解 config 配置目录,包括端口号等 详解 nod ...

  6. vue连接后端本地接口_详解vue配置后台接口方式

    详解vue配置后台接口方式 在vueAdmin项目中有两种方式配置后端接口的方式,在此做下记录 第一种(代理方式) 在工程目录下 > config > index.js - 修改为如下配置 ...

  7. 详解Vue响应式原理

    摘要: 搞懂Vue响应式原理! 作者:浪里行舟 原文:深入浅出Vue响应式原理 Fundebug经授权转载,版权归原作者所有. 前言 Vue 最独特的特性之一,是其非侵入性的响应式系统.数据模型仅仅是 ...

  8. vue动态设置文字布局方式_详解Vue动态添加模板的几种方法

    动态添加模板需要收集原始数据的页面,这个时候我们需要很多原始数据收集模板,下面给大家详解Vue 动态添加模板的几种方法,希望对你学习这方面知识有所帮助. 通常我们会在组件里的 template 属性定 ...

  9. vue调用手机相机相册_详解Vue调用手机相机和相册以及上传

    组件 选中{{imgList.length}}张文件,共{{bytesToSize(this.size)}} javaScript代码 export default { name: "cam ...

  10. vue 加载页面时触发时间_详解Vue.js在页面加载时执行某个方法

    详解Vue.js在页面加载时执行某个方法 jQuery中可以这样写 vue中,如果要达到相同效果,可以使用vue的生命周期函数,如create或者mounted 附上vue.js的生命周期函数执行流程 ...

最新文章

  1. 什么是Hive?它有哪些特点和特性?
  2. 多线程之:用户态和内核态的区别
  3. 父爱动画代码python_pygame用blit()实现动画效果的示例代码
  4. 博途中用的是c吗_配置太低玩不了赛博朋克?学会用这个电脑、手机都能轻松玩2077...
  5. java socket参数详解:OOBInline和UrgentData .
  6. JSP XML数据处理
  7. 快速幂(一个简单快速适合整数幂次的运算)
  8. shell遍历根目录_大厂运维高手如何打造核心竞争力?这些Shell命令合集得知道!...
  9. 显示器信号接口的发展历程
  10. TCP和TCP/IP的区别
  11. tictac 立体井字棋
  12. 蓝丝雨第八季高精端实战系列【商业实战DNF刷图】
  13. CentOS7下使用vlmcsd搭建KMS服务器激活环境
  14. vb6判断操作系统版本-从win95到win7
  15. 【论文笔记】EMBEDDING ENTITIES AND RELATIONS FOR LEARN-ING AND INFERENCE IN KNOWLEDGE BASES
  16. 大数据开发治理平台 DataWorks
  17. web設計常用代碼收集
  18. 自己收款码实现个人网站支付
  19. mysql语句统计总数_一条sql语句实现统计查询_MySQL
  20. 基于Matlab的3-D胸部扫描CT切片的肺部分割——使用活动轮廓(snakes)进行三维分割及建模

热门文章

  1. php ping 命令注入,CTF关于ping命令注入问题
  2. 子类窗口向父类窗口传值
  3. linux将mysql的错误连接数_Mysql学习笔记(十二) 并发参数调节
  4. 电子时钟单片机c语言程序,51单片机电子时钟C语言程序
  5. 2021年人工神经网络第一次作业:参考答案-1
  6. 第十七届智能车竞赛LOGO设计
  7. 反射式红外光电管 ITR8307
  8. kubernetes相关概念
  9. wxpython输入框_基于wxPython的GUI实现输入对话框(1)
  10. 伤疤好了有黑印怎么办_搞笑gif动态图片:“发现相亲对象的闺蜜更有实力,我后悔了”哈哈哈好一个见色起意...