日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VUE—从入门到飞起(二)

發布時間:2025/3/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VUE—从入门到飞起(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

過濾器filter

vue-resource發送http請求

axios發送http請求

VUE生命周期

VUE生命周期鉤子函數

自定義指令

watch

computed


VUE—從入門到飛起(一)

VUE—從入門到飛起(二)

VUE—從入門到飛起(三)

VUE—從入門到飛起(四)

VUE—從入門到飛起(五)

過濾器filter

<body><div id="app"><!--過濾器也可以在調用的時候傳遞多個參數--><!--過濾器也可以多次調用--><p>{{ msg | msgFormat('瘋狂'+1, '123') | test }}</p></div> </body> <script>//定義一個vue全局過濾器,msgFormatVue.filter('msgFormat', function(msg, arg, arg2) {//字符串的replace方法,第一個參數還可以寫正則return msg.replace(/單純/g, arg + arg2);});Vue.filter('test', function(msg) {//字符串的replace方法,第一個參數還可以寫正則return msg + '=====';});var vm = new Vue({el: "#app",data: {msg: "曾經,我也是一個單純的少年,我很單純"},methods: {}}) </script>

vue-resource發送http請求

導入vue.js、vue-resource.js注意:vue-resource依賴vue,所以注意先后順序 <div id="app"><input type="button" @click="getData" value="get請求" /><input type="button" @click="postData" value="post請求" /><input type="button" @click="jsonpData" value="jsonp請求" /> </div> <script>function jsonFc(data){console.log("jsonp" + data);console.log(data.name);console.log(data.age);}var vm = new Vue({el:"#app",data:{},methods:{getData(){//發起get請求,通過.then來設置回調函數this.$http.get("http://127.0.0.1:3000/jsonpData").then(function(result){//成功回調console.log(result);},function(err){//失敗回調})},postData(){//post請求//手動發起的post請求默認沒有表單格式,有的服務器處理不了//通過post方法第三個參數,設置提交的內容為普通表單格式this.$http.post("/url", {}, {emulateJSON:true}).then(result=>{//成功回調console.log(result);},err=>{//失敗回調})},jsonpData(){//jsonpthis.$http.jsonp("http://127.0.0.1:3000/jsonpData").then(result=>{console.log(result);},err=>{})}}}) </script>

axios發送http請求

注意導入vue.min.js和axios.min.js GET方式:axios.get('url').then(response => (this.info = response.data.sites)).catch(function (error) { // 請求失敗處理alert(error);});POST方式: axios.post('url',{rows : json }).then(function(resp){}).catch(function(e){//請求失敗處理 });post方式后臺獲取參數為null解決辦法: axios.post('url','keys=' + evictStr).then(function(resp){ console.log(resp); }).catch(function(e){});

VUE生命周期

VUE生命周期鉤子函數

<div id="app"><input type="button" value="修改msg" @click="msg = 'no'" /><h3 id="h3">{{ msg }}</h3> </div> <script>var vm = new Vue({el:"#app",data:{msg:'ok'},methods:{show(){console.log("執行了show()");}},beforeCreate(){//這是我們遇到的第一個生命周期函數,表示實例完全被創建出來之前會執行。//在本方法中,data和methods都未被初始化//console.log(this.msg);//undefined//this.show();//方法也未被初始化},created(){//這是遇到的第二個生命周期函數//在本方法中,data和methods都已經初始化好了//如果要調用methods和data,最早應該是在created方法中操作。//console.log(this.msg);ok//this.show();//執行了show()},beforeMount(){//這是遇到的第三個生命周期函數,表示模板已經編譯完成了,但是尚未把模板渲染到頁面中//beforeMont執行的時候,頁面中的元素,還沒有真正替換過來,只是之前寫的一些模板字符串//console.log(document.getElementById("h3").innerText);//{{ msg }}},mounted(){//這是遇到的第四個生命周期函數,表示內存中的模板已經真實的掛載到頁面中,用戶已經可以看到渲染好的頁面了//注意:mounted是實例創建期間的最后一個生命周期函數,當執行mounted已經完全創建好了,//如果要通過某些插件操作頁面上的dom節點,最早要在mounted中進行操作//此時如果沒有其他操作的話,這個實例就靜靜地躺在內存中一動不動//此時組件已經脫離了創建階段,進入了運行階段。//console.log(document.getElementById("h3").innerText);//ok},//接下來的是運行中的兩個事件beforeUpdate(){//數據被更新了觸發這個事件,這時候表示我們的界面還沒有被更新console.log("beforeUpdate界面上元素的內容" + document.getElementById("h3").innerText);//okconsole.log("beforeUpdatedata中的內容" + this.msg);//no//得出結論:當執行beforeUpdate時,頁面中的元素是舊的,此時data中數據是新的},updated(){//update執行的時候,頁面和data數據,已經保持一致了console.log("updated界面上元素的內容" + document.getElementById("h3").innerText);//noconsole.log("updateddata中的內容" + this.msg);//no},beforeDestroy(){//當執行beforeDestroy,vue實例從運行階段進入了銷毀節點。//當執行beforeDestroy的時候,此時實例身上所有data、methods過濾器等等,都處于可用狀態。},destroyed(){//當執行destroyed時候,組件已經被完全銷毀了,此時組件中所有的data、methods等都不可用。}}) </script>

自定義指令

<div id="app"><p>頁面載入時,input 元素自動獲取焦點:</p><input v-focus> </div><script> // 注冊一個全局自定義指令 v-focus /*Vue.directive('focus', {// 當綁定元素插入到 DOM 中。inserted: function (el) {// 聚焦元素el.focus()} })*/ // 創建根實例 new Vue({el: '#app',directives: {// 注冊一個局部的自定義指令 v-focusfocus: {// 指令的定義inserted: function (el) {// 聚焦元素el.focus()}}} }) </script>

watch

<div id="app"><input type="text" v-model="firstname"/>+<input type="text" v-model="lastname" />=<input type="text" v-model="fullname" /> </div><script>var vm = new Vue({el:"#app",data:{firstname:'',lastname:'',fullname:''},methods:{},watch:{//使用watch監視data 中指定數據的變化,觸發這個watchfirstname:function(newVal, oldVal){this.fullname = newVal + '-' + this.lastname;},lastname:function(newVal){this.fullname = this.firstname + '-' + newVal;}}}) </script>

computed

<div id="app"><input type="text" v-model="firstname"/>+<input type="text" v-model="lastname" />=<input type="text" v-model="fullname" /><p>{{ fullname }}</p><p>{{ fullname }}</p><p>{{ fullname }}</p> </div><script>var vm = new Vue({el:"#app",data:{firstname:'',lastname:''},methods:{},computed:{//在這里可以定義一些屬性,這些屬性叫做計算屬性,//計算屬性本質就是一些方法,只不過我們在使用這些計算屬性的時候,是把它們的名稱直接當做屬性來使用//并不會把計算屬性,當做方法去調用//注意:計算屬性,在引用的時候,一定不要加小括號()去調用, 直接把它當做普通屬性去使用//注意:只要計算屬性, 這個function內部所用到的任何data中的數據發生變化,就會立即重新計算屬性值//注意:計算屬性的求值結果,會被緩存起來,方便下次直接使用;如果計算屬性中所依賴的所有數據,都沒有發生過變化,則不會重新計算求值fullname:function(){console.log("ok");return this.firstname + '-' + this.lastname;}}}) </script>

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的VUE—从入门到飞起(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。