Vue示例

Vue 简明示例。 

首先要引入vue.js

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Vue 使用示例</title>
  <script src="vue.min.js"></script>
  <style>
	.bind_class {color:blue;border:1px solid #ccc;padding:2px 5px}
	.red {color:red;border:1px solid red}
	.italic {font-style:italic}
	.bold {font-weight:bold}
  </style>
 </head>
 <body>

  <div id="element_id">
	<div>
		<h3>变量绑定使用示例</h3>
		
		<ol>
			<li>
				<h5>显示变量内容,变量值变更后会更新</h5>
				<p>变量值:{{var_bind}}</p>
			</li>
			<li>
				<h5>变量值修改后不会更新,指令 v-once</h5>
				<p v-once>变量值:{{var_once}}</p>
			</li>
			<li>
				<h5>变量绑定,输出HTML内容,指令 v-html</h5>
				<p v-html="var_html">这里将被变量var_html的HTML内容给替换掉。</p>
			</li>
			<li>
				<h5>绑定属性,指令 v-bind:(html属性)</h5>
				<span v-bind:class="var_class">绑定class属性</span>
			</li>
			<li>
				<h5>JS计算表达式(不能用“;”结尾)</h5>
				<ol>
					<li>算数运算:{{ number + 1}}</li>
					<li>三元运算:{{ yes ? 'Yes' : 'No'}}</li>
					<li>函数调用: {{ var_func.split('').reverse().join('')}}</li>
				</ol>
			</li>
			<li>
				<h5>绑定样式</h5>
				<ol>
					<li v-bind:class="{red:is_red, bold:is_bold}">绑定class</li>
					<li v-bind:class="['red', 'italic']">绑定class,数组形式</li>
					<li :style="{border:style_border, background: false ? 'gray' : 'lightblue'}">绑定style,:style是<span :style="{color:style_color, fontSize:style_font_size}">v-bind:style</span>的简写</li>
				</ol>
			</li>
		</ol>
	</div>

	<div>
		<h3>条件渲染示例,指令:v-if, v-else-if, v-else</h3>
		判断结果:
		<span v-if="type == 'A'" style="color:red">条件值:A </span>
		<span v-else-if="type == 'B'" style="color:gray">条件值:B </span>
		<span v-else-if="type === 'C'" style="color:blue">条件值:C </span>
		<span v-else style="color:green">其它值</span>
	</div>

	<div>
		<h3>列表渲染,指令 v-for</h3>
		<ol>
			<li>
				<h5>数组方式</h5>
				<ul v-for="item in list_arr">
					<li>姓名:{{ item.name }}, 年龄:{{ item.age }}</li>
				</ul>

				<h5>数组方式(取数组下标号)</h5>
				<ul v-for="item, index in list_arr">
					<li>{{index}}. 姓名:{{ item.name }}, 年龄:{{ item.age }}</li>
				</ul>
			</li>

			<li>
				<h5>对象方式(遍历属性)</h5>
				<ul v-for="item in list_obj">
					<li>属性值:{{ item }}</li>
				</ul>

				<h5>对象方式(遍历属性,取属性名)</h5>
				<ul v-for="item, attr in list_obj">
					<li>{{attr}}:{{ item }}</li>
				</ul>
			</li>
		</ol>
	</div>

	<div>
		<h3>事件绑定,指令 v-on:(HTML事件名 onclick, ondblclick ...) 简写形式如:@click, @dblclick</h3>
		<ol>
			<li>
				<h5>行内JS</h5>
				<span v-on:click="click_counter ++">点我看click_counter的值:{{click_counter}}</span>
			</li>
			<li>
				<h5>绑定methods中的函数</h5>
				<button v-on:click="click();">点我</button>
			</li>
			<li>
				<h5>绑定methods中的函数并传参数</h5>
				<button v-on:click="show('Hello!! How are you.');">点我</button>
			</li>
			<li>
				<h5>绑定methods中的双击函数并传参数</h5>
				<button @dblclick="dblclick();">点我</button>
			</li>
			<li>
				<h5>绑定methods中的函数,传参数和事件对象($event)</h5>
				<button @click="event('事件对象:', $event);">点我</button>
			</li>
		</ol>
	</div>

	<div>
		<h5>表单对象,双向绑定,指令 v-model</h5>

		<input type="text" v-model="form_input">
		<p>input内容:{{form_input}}</p>

		<textarea v-model="form_textarea"></textarea>
		<p>textarea内容:{{form_textarea}}</p>

		<input type="checkbox" v-model="form_checkbox" value="Jack">Jack
		<input type="checkbox" v-model="form_checkbox" value="Jhon">Jhon
		<input type="checkbox" v-model="form_checkbox" value="Mike">Mike
		<p>checkbox内容:{{form_checkbox}}</p>

		<input type="radio" v-model="form_radio" value="One">One
		<input type="radio" v-model="form_radio" value="Two">Two
		<p>form_radio内容:{{form_radio}}</p>

		<input type="button" value="点击提交表单" @click="formSubmit">
	</div>

	<div>
		<h3>全局注册的组件</h3>
		<component1 id="组件1" text="组件1,绑定了自定义事件" @clicknow="func_clicknow"></component1>
		<component1 id="组件2" text="组件2"><span class="red">在组件内插入的内容</span></component1>
		<component1 id="组件3" text="组件3"></component1>

		<h3>局部注册的组件</h3>
		<component2 name="1"></component2>
		<component2 name="2"></component2>
	</div>
  </div>

  <script>

  // 创建组件,这样定义的组件是全局的,定义必须在实例化Vue对象之前
  Vue.component('component1', { // 相当于声明一个组件类
	props:['id', 'text'], // 组件标签属性
	data: function(){
		return {
				count:0 // 初始参数,相当于这个类的属性
			}
	},
	template:'<div><p>全局注册组件示例 {{id}}</p><button @click="func_click">{{text}} 点击次数:{{count}}</button><slot>内容插入点</slot></div>', // 多标签组件最外层要有父标签,否则只会解析第一个标签,一般用<div>做为外层标签也可以用别的如:<u><i>
	methods: { // 事件,相当于这个类的方法
		func_click: function(){
			this.count++;
			this.$emit('clicknow', this.count); // 为组件添加自定义事件属性,相当于在标签上增加事件绑定。
		}
	}
  });


	// 实例化Vue对象
  var vueObject = new Vue({
	
	el:'#element_id',

	data:{
		var_bind:'变量值',
		var_once:'改了也不变',
		var_html:'<span style="color:red;border:1px solid #CCC">HTML</span>',
		var_class:'bind_class',
		type:'B',
		number:21,
		yes:true,
		var_func:'vue',
		is_red: true,
		is_italic: true,
		is_bold: true,
		style_color:'green',
		style_font_size:'25px',
		style_border:'1px solid green',
		
		list_arr: [
			{ name:'张三', age:20 },
			{ name:'李四', age:21 }
		],
		list_obj:{
			name:'张三',
			age:23,
			province:'上海'
		},

		click_counter:0,

		form_input:'默认值',
		form_textarea:'',
		form_checkbox:['Jack', 'Mike'],
		form_radio:'Two'
	},

	methods:{
		click:function(){
			alert('点我了');
		},
		show:function(message){
			alert('参数值:'+message);
		},
		dblclick:function(){
			alert('点了我两下');
		},
		event:function(message, e){
			alert(message + typeof e);
			console.log(e);
		},
		formSubmit: function(){
			data = {
				input:this.form_input,
				textarea:this.form_textarea,
				checkbox:this.form_checkbox,
				radio:this.form_radio
			}

			console.log(data);
		},
		func_clicknow:function(count){
			alert('组件自定义事件:' + count);
		}
	},

	components:{ // 局部注册的组件
		component2:{
			props:['name'],
			data : function(){return {}},
			template:'<u>这是局部注册的组件 {{name}}<br></u>'
		}
	}
  });
  </script>
 </body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值