最近作的項目是從0開始採用Vue做爲數據驅動框架。因此有不少Vue實戰上的經驗體會,下面就專門拿幾個經常使用的但難度不高的VUe功能說一下:前端
上面的大概就是典型的須要對冒泡處理的一種業務了,單擊商品查看詳情界面,單擊查看進度進入進度界面。若是不作冒泡處理單擊查看進度的時候就會觸發父級事件,有可能進入商品詳情界面,相似代碼以下:web
<div @click="detailTap">
......
<div @click="planTap">查看進度</div>
</div>
複製代碼
不想單擊palnTap的時候也執行detailTap,只須要將查看進度的單擊事件修改爲以下代碼便可:小程序
<div @click.stop="planTap">查看進度</div>
複製代碼
原生代碼處理方式:微信小程序
// 一、w3c標準方法:event.stopPropagation()
// 二、IE則使用:event.cancelBubble=true
// 三、兼容性寫法
function planTap (event) {
if(event&& event.stopPropagation){
event.stopPropagation(); // w3c標準
}
else{
event.cancelBubble = true; // ie 678 ie瀏覽器
}
}
複製代碼
// 如下代碼不是完整可運行的代碼,請不要不作處理直接運行。
<div>{{item.age}}</div>
<div @click="aclick">單擊</div>
new Vue({
data: {
item: {}
},
methods: {
aclick: function () {
this.item.age = 18;
}
}
})
複製代碼
處理方式也比較簡單,只須要處理一次便可。後續無需在作這種處理,處理方式代碼以下:瀏覽器
this.$set(this.item, 'age', 18);
複製代碼
filter能夠是很是強大的功能,能夠幫你簡化不少的工做量:bash
咱們業務要求全部的單位都必須保留倆位小數,無論有沒有值,可是後臺傳過來的數值都是沒有這麼加工過的,因此須要前臺本身加工有了filter作一些簡易的處理就能夠完成:微信
<div>{{price | numTo2}}</div>
複製代碼
就是在渲染的數據後面用|隔開添加上你設置的filter函數便可,他不會改變數據的值,可是卻可讓獲得保留倆位小數的顯示效果,相關的filter函數代碼以下:框架
Vue.filter('numTo2', function (value) {
if (value == null || value == undefined || value == '') {
return value
} else {
return value.toFixed(2)
}
})
複製代碼
還有一個很是常見的場景就是處理時間,後臺傳過來的時間基本上都是yyyy-MM-dd HH:mm:ss這種格式的,你可能只想展現年月,或者是年月日等等。用了filter就很是簡單了dom
這個仍是簡單粗暴的,Vue是一個對象,對象都有原型,也就是直接擴展Vue的原型便可:函數
Vue.prototype.方法名 = function () {}
複製代碼
手機端的網頁操做機制跟PC端的操做機制是不同的,PC端不多可以用到返回鍵,由於可以打開新的界面,但是手機端不能,而且操做返回鍵很是頻繁,像history.back()功能太多簡單不足以處理太多的複雜場景例如:
商品界面->支付界面->支付成功界面->返回到商品界面
這個單純的history.back()是無法實現的,像微信小程序,他一共給開發者提供了五種不一樣的跳轉方式,可以知足大部分場景,但是web是不支持的。因此在遇到上面狀況的時候你須要監聽返回事件,本身跳轉返回界面。可是這個樣子會陷入返回死循環,因此我想到了倆種處理方式:
// 相關代碼:
Vue.prototype.$historyBack = function (url) {
pushHistory();
window.addEventListener("popstate", function(e) { //回調函數中實現須要的功能
// alert("我監聽到了瀏覽器的返回按鈕事件啦");
window.location.href = url; //在這裏指定其返回的地址
}, false);
function pushHistory() {
var state = {
title: "個人合同",
url: "#"
};
window.history.pushState(state, state.title, state.url);
}
};
// 使用方式:
this.historyBack(url);
複製代碼
不知道從何時開始,我開始發現隨便聽一首歌須要花錢,隨便看一個視頻須要花錢,隨便看一篇文章須要花錢。隨着信息的傳播愈來愈方便,對內容的質量就愈來愈看重了,愈來愈的平臺開啓了讚揚功能,刺激做者寫出更多優質的文章。我感受知識付費的時代已經來臨,任何一個領域的技術人員都應該掌握知識變現的本領。
往期回顧:
感受文章有趣能夠關注個人公衆號吵吵日記: