Vue 选项 详解

所有demo均可以在技术胖博客找到,他的博客写得非常好,也经常更新一些新的知识,有兴趣的小伙伴可以移步去他的博客。链接:web前端技术

1.propsData Option 全局扩展的数据传递

<!DOCTYPE html>
<html>
<head>
	<title>propsData Option 全局扩展的数据传递</title>
</head>
<body>
	<h1>propsData Option 全局扩展的数据传递</h1>
	<hr>
	<div id="app">
		<header></header>
	</div>



	<script type="text/javascript" src="../assets/js/vue.js"></script>

	<script>
		var header_a = Vue.extend({
			template:`<div>{{message}}-{{a}}</div>`,
			data(){
				return {
					message:'Hello, I am Header'
				}
			},
			props:['a']
		})

		new header_a( {propsData:{a:'这是props传值'}} ).$mount('header')
	</script>
</body>
</html>

2.computed Option 计算选项

<!DOCTYPE html>
<html>
<head>
	<title>computed Option 计算选项</title>
</head>
<body>
	<h1>computed Option 计算选项</h1>
	<hr>
	<div>computed 的作用主要是对原数据进行改造输出。改造输出:包括格式的编辑,大小写转换,顺序重排,添加符号……。</div><br>
	
	<div style="font-weight: 700;">computed 属性是非常有用,在输出数据前可以轻松的改变数据。</div>
	<div id="app">
		<br><div>格式化输出结果:</div>
		<div style="color:red;">{{newPrice}}</div><br>
		<div>反转数据:</div>
		<ol style="color:red;">
			<li v-for="item in newArr">{{item.title}}-{{item.date}}</li>
		</ol>
	</div>



	<script type="text/javascript" src="../assets/js/vue.js"></script>

	<script>
		var app = new Vue({
			el:"#app",
			data:{
				price:100,
				arr:[
					{title:'香港或就“装甲车被扣”事件追责 起诉涉事运输公司',date:'2017/3/10'},
					{title:'日本第二大准航母服役 外媒:针对中国潜艇',date:'2017/3/12'},
					{title:'中国北方将有明显雨雪降温天气 南方阴雨持续',date:'2017/3/13'},
					{title:'起底“最短命副市长”:不到40天落马,全家被查',date:'2017/3/23'},
				]
			},
			computed:{
				newPrice(){
					return this.price = "这件衣服的价格是"+this.price+"元";
				},
				newArr(){
					return this.arr.reverse()
				}
			}
		})
	</script>
</body>
</html>

3.Methods Option 方法选项

<!DOCTYPE html>
<html>
<head>
	<title>Methods Option 方法选项</title>
</head>
<body>
	<h1>Methods Option 方法选项</h1>
	<hr>
	<div id="app">
		<div>{{count}}</div>
		<button @click="add">Add</button>
		<button @click="add2(number)">方法传参</button>
		<button @click="add3($event)">方法$event参数</button>
		<btn @click.native="add2(3)"></btn>
	</div>
	<button onclick="app.add2(2)">作用域外部调用构造器里的方法</button>
	<div style="color: red;">作用域外部调用构造器里的方法,这种不经常使用,如果你出现了这种情况,说明你的代码组织不够好。</div>
	<script type="text/javascript" src="../assets/js/vue.js"></script>
		
	<script>
		var btn = {
			template:`<button>native 给组件绑定构造器里的原生事件</button>`
		}
		var app = new Vue({
			el:"#app",
			data:{
				count:0,
				number: 5
			},
			methods:{
				add(){
					this.count++;
				},
				add2(num){
					if (num != '') {
						this.count += num;
					}else{
						this.count++;
					}
				},
				add3($event){
					console.log($event);
				}
			},
			components:{
				'btn':btn
			}
		})
	</script>
</body>
</html>

4.Watch 选项 监控数据

<!DOCTYPE html>
<html>
<head>
	<title>Watch 选项 监控数据</title>
</head>
<body>
	<h1>Watch 选项 监控数据</h1>
	<hr>
	<div>数据变化的监控经常使用</div>
	<div id="app">
		<div>当前温度是:{{count}}</div>
		<div>
			<button @click="add">加</button>
			<button @click="del">减</button>
		</div>
		<div style="color:red;">{{tip}}</div>
	</div>



	<script type="text/javascript" src="../assets/js/vue.js"></script>

	<script>
		var app = new Vue({
			el:"#app",
			data:{
				count:0,
				tip: '我们建议穿棉衣羽绒服',
				tipArr:['我们建议穿T恤短袖','我们建议穿夹克长裙','我们建议穿棉衣羽绒服']
			},
			methods:{
				add(){
					this.count = this.count+1;
					if (this.count >= 26) {
						this.tip = this.tipArr[0];
					}else if(this.count <= 26 && this.count > 0){
						this.tip = this.tipArr[1];
					}else if(this.count <= 0 ){
						this.tip = this.tipArr[2];
					}
				},
				del(){
					this.count = this.count-1;
					if (this.count >= 26 ) {
						this.tip = this.tipArr[0];
					}else if(this.count <= 26 && this.count > 0){
						this.tip = this.tipArr[1];
					}else if(this.count <= 0 ){
						this.tip = this.tipArr[2];
					}
				}
			}
		})
	</script>
</body>
</html>

5.Mixins的基本用法

<!DOCTYPE html>
<html>
<head>
	<title>Mixins的基本用法</title>
</head>
<body>
	<h1>Mixins的基本用法</h1>
	<hr>
	<div id="app">
		<div>{{count}}</div>
		<div><button @click="add">add</button></div>
		<div>从执行的先后顺序来说,都是混入的先执行,然后构造器里的再执行,需要注意的是,这并不是方法的覆盖,而是被执行了两边。</div>
		<div style="color:red;">当混入方法和构造器的方法重名时,混入的方法无法展现,也就是不起作用</div>
	</div>



	<script type="text/javascript" src="../assets/js/vue.js"></script>

	<script>
		//额外临时加入,用于显示日志
		var addLog = {
			updated: function(){
				console.log("数据发生变化"+this.count)
			}
		}
		var app = new Vue({
			el:"#app",
			data:{
				count:0
			},
			methods:{
				add(){
					this.count++;
					console.log("anniu自增")
				}
			},
			mixins:[addLog],
			updated(){
				console.log("构造器里的updated方法。")
			}
		})
	</script>
</body>
</html>

6.Extends Option 扩展选项

<!DOCTYPE html>
<html>
<head>
	<title>Extends Option 扩展选项</title>
</head>
<body>
	<h1>Extends Option 扩展选项</h1>
	<hr>
	<div id="app">
		${message}
		<div><button @click="add">add</button></div>
	</div>



	<script type="text/javascript" src="../assets/js/vue.js"></script>

	<script>
		var myExtends = {
			created:function(){
				console.log("我是被created出来方法");
			},
			methods:{
				add:function(){
					console.log("我是被methods出来方法");
				}
			}
		}

		var app = new Vue({
			el:"#app",
			data:{
				message:"你好,世界!"
			},
			methods:{
				add(){
					console.log("我是构造器原生方法")
				}
			},
			extends:myExtends,
			//改变插值的符号
			delimiters:['${','}']
		})
	</script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值