Vue的賦值,指令,過濾,計算屬性,監控屬性

Vue的賦值

vue有4種賦值方式

1.文本的方式

2.HTML的方式

3.屬性的方式

4.表達式

<!--在樣式中加
    <style>
			.class1{
				font-size: 12px;
				color: darkgreen
			}
		</style>
-->
<body>
		
		<div id="wenb">
			<h2>vue的四種賦值方式</h1>
			<h3>1.文本的方式</h2>
			{{name}}
			
			<h3>2.html的方式</h3>
			<div v-html="html"></div>
			
			<h3>3.屬性的方式</h3>
			<!--這裏的class1指向的是vue裏面的class1,然後vue裏面的class1再指向class名-->
			<!--v-bind指令:綁定一個屬性,比如class,id等-->
			<div v-bind:class="class1">湖南嶽陽</div>
			
			<!--可以使用JavaScript使用的方式-->
			<h3>4.表達式的方式</h3>
			{{number+1}}
			<input value="xxxx"  v-bind:class="'type_'+id"/>
		</div>
		
		
		<script>
			var vue1=new Vue({
				el:'#wenb',
				data:function(){
					return {
						name:'xxxx',
						html:'<input value="女" type="text"/>',
						class1:'class1',
						number:17,
						id:12
					}
				}
			})
		</script>
	</body>

Vue的指令

指令,指的是v-前綴的特殊屬性

一步用的有v-if|v-else-if|v-else/v-for/v-on/v-bind/v-show/v-model

v-if|v-else-if:相當於if elseif else

v-for:相當於for循環

v-on:綁定事件

v-bind:綁定屬性

v-show:顯示

v-model:雙向綁定數據

<body>
		
		<div id="div1">
			<h2>vue的指令</h2>
			<h3>v-if|v-else-if|v-else</h3>
                                <!--判斷是男還是女-->
				<div v-if="sex==0">
					男
				</div>
				<div v-else-if="sex==1">
					女
				</div>
				<div v-else>
					不知
				</div>
			
				<h3>v-for</h3>
                                <!--循環遍歷集合-->
				<div v-for="u in users">
					{{u.id}}----{{u.name}}
				</div>
				
				<h3>v-show</h3>
                                <!--如果選中就顯示,不選中就隱藏-->
				<input type="checkbox" v-model="show"/>
				<div v-show="show">
					小行星小行星嘻嘻嘻嘻嘻嘻
				</div>
			
				<h3>實現複選框默認選中</h3>
				<div v-for="(u,i) in users">
					<!--@click綁定的事件中獲取了複選框的值-->
					{{i+1}}<input type="checkbox" v-bind:value="u.id" v-model="sid" @click="dclick()"/>{{u.name}}
				</div>
		</div>
		
		
		
		<script>
			var vue=new Vue({
				el:'#div1',
				data:{
					sex:'0',
					users:[
						{id:1,name:'xx1'},
						{id:2,name:'xx2'},
						{id:3,name:'xx3'}
					],
					<!--默認選中-->
					sid:[1],
					show:'true'
				},
				methods:{
					dclick:function(){
						console.log(this.sid);
					}
				}
			})
		</script>
	</body>

Vue的過濾

相當於過濾器

有局部過濾器和全局過濾器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>過濾器</title>
		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
		<!--引入時間的js-->
		<script src="date.js"></script>
	</head>
	<body>
		<div id="div3">
			<h2>過濾相當於過濾器</h2>
			<h3>全局過濾器---在創建vue對象的上面定義</h3>
			<div>
				{{time}}<br/>
				{{time|formatDate}}
			</div>
			<h3>局部過濾器</h3>
			<div>
				{{card|cardNum}}
			</div>
		</div>
		
		<script> 
			<!--v是參數,可以隨便命名-->
			Vue.filter('formatDate',function(v){
				return fmtDate(v,'yyyy-MM-dd');
			});
			var vue=new Vue({
				el:'#div3',
				data:{
					time:new Date(),
					card:'4306xxxxxxxxxxxxxx'
				},
				filters:{
					cardNum:function(v){
						return v.substr(0,6)+'XXXXXXXX'+v.substr(14,19);
					}
				}
			}) 
		</script>
	</body>
</html>

附date.js 

//給Date類添加了一個新的實例方法format
Date.prototype.format = function (fmt) {
	//debugger;
    var o = {
        "M+": this.getMonth() + 1,                 //月份
        "d+": this.getDate(),                    //日
        "h+": this.getHours(),                   //小時
        "m+": this.getMinutes(),                 //分
        "s+": this.getSeconds(),                 //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds()             //毫秒
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
};

function fmtDate(date, pattern) {
	var ts = date.getTime();
    var d = new Date(ts).format("yyyy-MM-dd hh:mm:ss");
    if (pattern) {
        d = new Date(ts).format(pattern);
    }
    return d.toLocaleString();
};

 Vue的計算屬性和監控屬性

<body>
		<div id="div_1">
			<h2>計算屬性</h2>
			<div v-for="rs in result">
				{{rs.name}}<input v-bind:value="rs.shu" type="text"/>
			</div>
                        <!--計算所有科目的總和-->
			{{sum}}
			
			
			
			<h2>監聽屬性</h2>
			<div>
				<!--KM的改變,M也會改變-->
				KM:<input type="text" v-model="km"/></br>
				M:<input type="text" v-model="m"/>
			</div>
		</div>
		
		
		
		
		<script>
			var vue=new Vue({
				el:'#div_1',
				data:{
					result:[
						{name:'java',shu:100},
						{name:'C#',shu:100},
						{name:'python',shu:100},
						{name:'mysql',shu:100},
					],
					km:1,
					m:1000
				},
				computed:{
					sum:function(){
						let s=0;
						for(var i=0;i<this.result.length;i++){
							s+=this.result[i].shu;
						}
						return s;
					}
				},
				<!--監聽-->
				watch:{
					km:function(v){
						this.m=parseInt(v)*1000;
					},
					m:function(v){
						this.km=parseInt(v)/1000;
					}
				}
			})
		</script>
	</body>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章