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 相关文章推荐
javascript String 对象
Apr 25 Javascript
js判断生效时间不得大于失效时间的思路及代码
Apr 23 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
Oct 15 Javascript
js弹窗返回值详解(window.open方式)
Jan 11 Javascript
JSON格式的键盘编码对照表
Jan 29 Javascript
Javascript 实现匿名递归的实例代码
May 25 Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 Javascript
Angularjs中数据绑定的实例详解
Aug 25 Javascript
JavaScript图片处理与合成总结
Mar 04 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
Apr 12 Javascript
vue中组件的过渡动画及实现代码
Nov 21 Javascript
JS module的导出和导入的实现代码
Feb 25 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折半(二分)查找算法实例分析
2018/05/12 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
JavaScript实用技巧(一)
2010/08/16 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
python验证码识别的实例详解
2016/09/09 Python
python字符串下标与切片及使用方法
2020/02/13 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
促销活动策划方案
2014/01/12 职场文书
写给女生的道歉信
2014/01/14 职场文书
自荐信格式简述
2014/01/25 职场文书
大学活动总结范文
2014/04/29 职场文书
询价采购方案
2014/06/09 职场文书
群教个人对照检查材料
2014/08/20 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
2014年少先队工作总结
2014/12/03 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技