Vue组件基础

  • 全局组件

Vue.component('myComponent',{//组件名使用驼峰命名,在使用组件时需将大写字母转成"-"+小写字母的形式
    
    data:function(){
        return {//return一个对象,确保全局组件的每个实例有自己的数据
            value1:"",
            value2:"" 
        }
    },
    methods:{
        methods1:function(){},
        methods2:function(){}
    },
    props:["mypropos"],//自定义组件属性,属性过多时可接收一个参数对象,在template中可使用该对象的属性
    template:"<h3>我是全局组件,我的自定义属性有{{mypropos}}</h3>"//组件模板,里面可使用自定义属性,若自定义属性为对象时,可用点语法访问对象的属性

});

var vm=new Vue({
    el:"#app",
})

使用: 

/*使用属性绑定给组件传入不同的数据*/
<my-component :mypropos="'测试'">

</my-component>

 

  • 私有组件

var vm=new Vue({

    el:"#app",
    data:{
    
    },
    methods:{

    },
    component:{//定义私有组件
        'myComponent1':{
           data:function(){
               return {//return一个对象,确保全局组件的每个实例有自己的数据
                   value1:"",
                   value2:"" 
               }
            },
           template:"<h3>我是私有组件1</h3>"
        },
        'myComponent2':{
            data:function(){
                return {//return一个对象,确保全局组件的每个实例有自己的数据
                    value1:"",
                    value2:"" 
                }
            },
            template:"<h3>我是私有组件2</h3>"
        },
    }

})

 

  • 两个组件间的切换(flag控制)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="../../js/Vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		
		<div id="app">
			<a href="#" @click.prevent="setFlagTrue">登录按钮</a>
			<a href="#" @click.prevent="setFlagFalse">注册按钮</a>
			
			<login v-if="flag"></login>
			<resign v-else="flag"></resign>
			
		</div>
		
		<script>

			//登录组件
		Vue.component('login',{
			template:'<h3>登录组件</h3>',//可使用id引入,在外部写template有代码提示
		});
		
			//注册组件
		Vue.component('resign',{
			template:'<h3>注册组件</h3>',//可使用id引入,在外部写template有代码提示
		});
			
		var vm=new Vue({				
			el:"#app",
		  data:{
				flag:false,
		  },
			methods:{
				setFlagTrue:function(){
					this.flag=true;
				},
				setFlagFalse:function(){
					this.flag=false;
				}
			},					
		})
			
	</script>
	</body>
</html>

 

  • 多组件间的切换(:is)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="../../js/Vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		
		<div id="app">
			
			<!--Vue提供的component元素实现多个组件间的切换-->
			<component :is="'test'"></component>
			
			<a href="#" @click.prevent="testName='test1'">切换test1</a>
			<a href="#" @click.prevent="testName='test2'">切换test2</a>		
			<a href="#" @click.prevent="testName='test3'">切换test3</a>	
		
			<component :is="testName"></component>
			
		</div>
		
		<script>

			//测试组件1
		Vue.component('test1',{
			template:'<div>测试组件1</div>',//可使用id引入,在外部写template有代码提示
		});
		
			//测试组件2
		Vue.component('test2',{
			template:'<div>测试组件2</div>',//可使用id引入,在外部写template有代码提示
		});
		
			//测试组件3
		Vue.component('test3',{
			template:'<div>测试组件3</div>',//可使用id引入,在外部写template有代码提示
		});
			
		var vm=new Vue({				
			el:"#app",
		  data:{
				testName:""
		  },				
		})
			
	</script>
	</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值