Vue.js入門

指令

使用’{{}}‘訪問vue實例裏data內的數據,’{{}}'稱之爲插值表達式,此方式訪問數據會有數據閃爍的問題。

  • v-text:作用與’{{}}'插值表達式類似,只是v-text會將html內容覆蓋,v-text可以做類似的表達式計算,前提是i是數字,v-text=“i+1”
  • v-cloak:解決能夠解決插值表達式閃爍的問題
  • v-html:可以把數據當作html內容解析,且也會覆蓋綁定html元素的內容。
  • v-bind:是用來綁定屬性的,可以簡寫爲冒號’:’
	<input type="button"  value="按鈕" v-bind:title="title+'哈哈'">
	可簡寫爲:
	<input type="button"  value="按鈕" :title="title+'哈哈'">
	可以看到 引號裏面也是可以寫表達式的。
  • v-on:類似於onclick事件 v-on:click="myEvent()"可以簡寫爲:@click=“myEvent()”
v-on指令的事件修飾符:
a) .stop 阻止冒泡
b) .prevent 阻止瀏覽器的默認事件
c) .capture 添加事件監聽器時使用事件捕獲模式
d) .self 當事件在該元素本身觸發時 觸發回調
e) .once 事件只觸發一次
  • v-model:實現雙向數據綁定事件,注意:v-model只能運用在表單元素上(input select checkbox textarea)
  • v-for:迭代元素 注意:使用v-for循環的時候一定要加給綁定key屬性,key屬性綁定的值只能時string或number類型
v-for是用來做迭代的,有如下幾種用法
a) 迭代數組
b) 迭代對象
c) 迭代數組對象 
	<h6 v-for="(array,i) in list">{{array}}----->{{i}}</h6>   list:[1,2,3,4]
	<h6 v-for="(obj,i) in objList">{{obj.id}}----->{{obj.name}}---->{{i}}</h6> objList:[{id:1,name:'dsx'},{id:2,name:'dsx2'}]
	<h6 v-for="(val,key,i) in obj">{{val}}---->{{key}}---->{{i}}</h6>   obj:{name:'dsx',age:12,sex:'男'}
	<h6 v-for="x in 20">{{x}}</h6>  //循環數字
  • v-if: 表達式爲true則顯示元素
  • v-show: 與v-if效果類似,但性能有差異
	//如果某點擊事件方法裏只有一句話,則可以使用如下方式:@click="flag=!flag"   取反切換
	<input type="button" name="" id="" value="toggle" @click="flag=!flag" />
	<h3 v-if="flag">這是v-if控制的元素</h3>
	<h3 v-show="flag">這是v-show控制的元素</h3>

數組的遍歷

  • 使用for遍歷 :原始方式
  • 使用array.forEach遍歷 注意:這種方式無法強制終止循環,參數是一個函數,類似java的lambda表達式
this.a.forEach( item => {
	if(item.title.indexOf(keyword)!=-1){
	array.push(item); 
					}
				})
  • 使用array.filter過濾 會返回一個新的數組
return this.a.filter( obj => {
	if(obj.title.indexOf(keyword)!=-1){
		return obj;
						}
					})
  • 使用array.some方式
this.a.some( obj => {
	if(obj.title.indexOf(keyword)!=-1){
	array.push(obj);
		}
			})

vue中的全局過濾器

vue中的過濾器是用來做數據格式化的

  • 語法: Vue.filter(‘過濾器名稱’,function(data){}) 參數function裏的參數只能是管道前面的數據,
    也即下面例子中的msgfunction可以有多個參數, 過濾器也是進行鏈式調用
  • 使用 可以在插值表達式和v-bind指令中用管道的方式使用 eg:{{ msg | Myfilter }}
<h3 :class="['red','big',{'active':flag}]">{{ b | myFilter('zz','cj')}}</h3>
Vue.filter('myFilter',function(data){
	return data+'  鄧紹祥';
})

使用vue中的全局過濾器做日期格式化

Vue.filter('dateFomat',function(dateString,pattern=''){		//pattern=''表示默認時爲'',
	var date =new Date(dateString);
	var y=date.getFullYear();
	var m=date.getMonth()+1;//月份從零開始的
	var d=date.getDate();
	if(pattern.toLowerCase() === 'yyyy-mm-dd'){
		return `${y}-${m}-${d}`;
	}else{
		var hh=date.getHours();
		var mm=date.getMinutes();
		var ss=date.getSeconds();
		return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
	}
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章