vue内置组件component--通过is属性动态渲染组件操作


Posted in Javascript onJuly 28, 2020

我就废话不多说了,大家看代码吧~

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/vue"></script>
		<script src="https://cdn.bootcss.com/vue-router/3.1.3/vue-router.js"></script>
		<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
	</head>
	<body>
		<div id="app">
			<input @click="currentrouter='Home'" type="button" value="首页"/>
			<input @click="currentrouter='Fenlei'" type="button" value="分类"/>
			<input @click="currentrouter='My'" type="button" value="我的"/>
			<!-- 动态组件 component -->
			<component :is="currentrouter"></component>
		</div>
		
		<template id="home">
			<div>
				{{msg}}
			</div>
		</template>
		<template id="fenlei">
			<div>
				{{msg}}
			</div>
		</template>
		<template id="my">
			<div>
				{{msg}}
			</div>
		</template>
		
		<script>
			//局部定义三个组件
			const Home = {
				template:"#home",
				data(){
					return{
						msg:"这里是home组件"
					}
				}
			}
			const Fenlei = {
				template:"#fenlei",
				data(){
					return{
						msg:"这里是fenlei组件"
					}
				}
			}
			const My = {
				template:"#my",
				data(){
					return{
						msg:"这里是my组件"
					}
				},
			}
			//vue 实例
			var vm = new Vue({
				el:"#app",
				components:{
					Home,
					Fenlei,
					My
				},
				data:{
					msg:"hello world",
					currentrouter:"Home"
				},
				methods:{
					
				}
			})
			
		</script>
	</body>
</html>

补充知识:详解vue组件的is特性:限制元素&动态组件

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

vue内置组件component--通过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内置组件component--通过is属性动态渲染组件操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
html向js方法传递参数具体实现
Aug 08 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
Jul 18 Javascript
jQuery实现动态添加和删除一个div
Aug 12 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
Oct 27 Javascript
Bootstrap3 内联单选和多选框
Dec 29 Javascript
使用vue实现点击按钮滑出面板的实现代码
Jan 10 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
Aug 24 Javascript
vue-cli项目无法用本机IP访问的解决方法
Sep 20 Javascript
微信小程序系列之自定义顶部导航功能
May 21 Javascript
Vue商品控件与购物车联动效果的实例代码
Jul 21 Javascript
微信小程序复选框实现多选一功能过程解析
Feb 14 Javascript
基于JavaScript实现猜数字游戏代码实例
Jul 30 Javascript
Postman如何实现参数化执行及断言处理
Jul 28 #Javascript
微信小程序实现电子签名功能
Jul 29 #Javascript
Vue的自定义组件不能使用click方法的解决
Jul 28 #Javascript
浅谈JavaScript中this的指向问题
Jul 28 #Javascript
浅谈JavaScript中this的指向更改
Jul 28 #Javascript
Postman内建变量常用方法实例解析
Jul 28 #Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
Jul 28 #Javascript
You might like
php 中的4种标记风格介绍
2012/05/10 PHP
php实现在限定区域里自动调整字体大小的类实例
2015/04/02 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
基于php判断客户端类型
2016/10/14 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
python写的ARP攻击代码实例
2014/06/04 Python
简述Python中的面向对象编程的概念
2015/04/27 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
python实现TCP文件传输
2020/03/20 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
如何使用PHP session
2015/04/21 面试题
性能测试工程师的面试题
2015/02/20 面试题
大学生应聘导游自荐信
2014/06/02 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
师范生见习报告
2014/10/31 职场文书
中学生检讨书范文
2014/11/03 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
MySQL修炼之联结与集合浅析
2021/10/05 MySQL