成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

vue有什么常用api

vue的api有:1、nextTick;2、mixin;3、“$forceUpdate”;4、set和delete;5、filter;6、directive;7、“$root”;8、“$el”;9、“$data”;10、“$props”等。

vue有什么常用api

本教程操作環境:windows7系統、vue2.9.6版,DELL G3電腦。

nextTick


功能: 添加在下次Dom更新循環結束之后的延遲回調,修改數據之后,可以獲取更新后的Dom。
用法:

Vue.nextTick( [callback, context] ) vm.$nextTick( [callback] ) // 用法2 // 作為一個 Promise 使用 (2.1.0 起新增) Vue.nextTick()   .then(function () {     // DOM 更新了   })

說明:

  • callback:延遲回調函數
  • context:可選的object

ps:2.1.0 起新增:如果沒有提供回調且在支持 Promise 的環境中,則返回一個 Promise。請注意 Vue 不自帶 Promise 的 polyfill,所以如果你的目標瀏覽器不原生支持 Promise (IE:你們都看我干嘛),你得自己提供 polyfill。

擴展: 關于nextTick的執行機制和使用場景,我們還必須掌握類似的requestAnimationFrame() 和 process.nextTick(), 前者是瀏覽器自帶的監聽(在下次重繪之前執行),后者是node環境下,在下一個事件輪詢的時間點上執行。

mixin


功能: 注冊一個混入,影響注冊之后所有創建的每個 Vue 實例。插件作者可以使用混入,向組件注入自定義的行為。
用法:

// 為自定義的選項 'myOption' 注入一個處理器。 Vue.mixin({   created: function () {     var myOption = this.$options.myOption     if (myOption) {       console.log(myOption)     }   } })  new Vue({   myOption: 'hello!' }) // => "hello!"

說明:

  • object:一個vm的屬性或方法

ps:請謹慎使用全局混入,因為它會影響每個單獨創建的 Vue 實例 (包括第三方組件)。大多數情況下,只應當應用于自定義選項,就像上面示例一樣。推薦將其作為插件發布,以避免重復應用混入。

$forceUpdate


功能: 迫使 Vue 實例重新渲染。
用法:

vm.$forceUpdate()

說明: 注意它僅僅影響實例本身和插入插槽內容的子組件,而不是所有子組件。

set、delete


功能: 對響應式數據的屬性進行設置、刪除,同時觸發視圖更新。
用法:

// 用法1 Vue.set( target, key, value ) Vue.delete( target, key ) // 用法2 vm.$set( target, key, value ) vm.$delete( target, key )

說明:

  • target:目標對象
  • key:要添加的屬性名
  • value:要添加的屬性值

ps:主要使用場景,可以避開 Vue 不能檢測到 property 被刪除的限制

filter


功能: 用于一些常見的文本格式化和一些規范數據mapping。
用法:

<!-- 在雙花括號中 --> {{ message | capitalize }}  <!-- 在 `v-bind` 中 --> <div v-bind:id="rawId | formatId"></div>
// 注冊 filters: {   capitalize: function (value) {     if (!value) return ''     value = value.toString()     return value.charAt(0).toUpperCase() + value.slice(1)   } }
// 全局注冊 Vue.filter('capitalize', function (value) {   if (!value) return ''   value = value.toString()   return value.charAt(0).toUpperCase() + value.slice(1) })  new Vue({   // ... })

說明:

  • 過濾器函數總接收表達式的值 (之前的操作鏈的結果) 作為第一個參數。
  • 過濾器應該被添加在 JavaScript 表達式的尾部,由“管道”符號指示。

ps:過濾器可以接受多個參數,如{{ message | filterA('arg1', arg2) }},這里,filterA 被定義為接收三個參數的過濾器函數。其中 message 的值作為第一個參數,普通字符串 'arg1' 作為第二個參數,表達式 arg2 的值作為第三個參數。

directive


功能: 用于注冊自定義指令。
用法:

<!-- 當頁面加載時,該元素將獲得焦點 -->  <input v-focus>
// 注冊一個全局自定義指令 `v-focus` Vue.directive('focus', {   // 當被綁定的元素插入到 DOM 中時……   inserted: function (el) {     // 聚焦元素     el.focus()   } })
// 注冊局部指令,組件中也接受一個 directives 的選項 directives: {   focus: {     // 指令的定義     inserted: function (el) {       el.focus()     }   } }

說明:

  • inserted 只是注冊指令的其中一個插值函數,完整的注冊屬性還可以包括:
    • bind:只調用一次,指令第一次綁定到元素時調用,在這里可以進行一次性的初始化設置。
    • inserted:被綁定元素插入父節點時調用(僅保證父節點存在,但不一定已被插入文檔中)。
    • update:所在組件的 VNode 更新時調用,但是可能發生在其子 VNode 更新之前。指令的值可能發生了改變,也可能沒有,但是可以通過比較更新前后的值來忽略不必要的模板更新。
    • componentUpdated:指令所在組件的 VNode 及其子 VNode 全部更新后調用。
    • unbind:只調用一次,指令與元素解綁時調用。
Vue.directive('my-directive', {   bind: function () {},   inserted: function () {},   update: function () {},   componentUpdated: function () {},   unbind: function () {} })

v-model 語法糖

v-model 常用于表單元素上進行數據的雙向綁定,比如 <input>。除了原生的元素,它還能在自定義組件中使用。

v-model 是一個語法糖,可以拆解為 props: value 和 events: input。就是說組件必須提供一個名為 value 的 prop,以及名為 input 的自定義事件,滿足這兩個條件,使用者就能在自定義組件上使用 v-model。比如下面的示例,實現了一個數字選擇器:

<template>   <div>     <button @click="increase(-1)">減 1</button>     <span >{{ currentValue }}</span>     <button @click="increase(1)">加 1</button>   </div> </template> <script>   export default {     name: 'InputNumber',     props: {       value: {         type: Number       }     },     data () {       return {         currentValue: this.value       }     },     watch: {       value (val) {         this.currentValue = val;       }     },     methods: {       increase (val) {         this.currentValue += val;         this.$emit('input', this.currentValue);       }     }   } </script>

props 一般不能在組件內修改,它是通過父級修改的,因此實現 v-model 一般都會有一個 currentValue 的內部 data,初始時從 value 獲取一次值,當 value 修改時,也通過 watch 監聽到及時更新;組件不會修改 value 的值,而是修改 currentValue,同時將修改的值通過自定義事件 input 派發給父組件,父組件接收到后,由父組件修改 value。所以,上面的數字選擇器組件可以有下面兩種使用方式:

<template>   <InputNumber v-model="value" /> </template> <script>   import InputNumber from '../components/input-number/input-number.vue';    export default {     components: { InputNumber },     data () {       return {         value: 1       }     }   } </script>

或:

<template>   <InputNumber :value="value" @input="handleChange" /> </template> <script>   import InputNumber from '../components/input-number/input-number.vue';    export default {     components: { InputNumber },     data () {       return {         value: 1       }     },     methods: {       handleChange (val) {         this.value = val;       }     }   } </script>

如果你不想用 value 和 input 這兩個名字,從 Vue.js 2.2.0 版本開始,提供了一個 model 的選項,可以指定它們的名字,所以數字選擇器組件也可以這樣寫:

<template>   <div>     <button @click="increase(-1)">減 1</button>     <span >{{ currentValue }}</span>     <button @click="increase(1)">加 1</button>   </div> </template> <script>   export default {     name: 'InputNumber',     props: {       number: {         type: Number       }     },     model: {       prop: 'number',       event: 'change'     },     data () {       return {         currentValue: this.number       }     },     watch: {       value (val) {         this.currentValue = val;       }     },     methods: {       increase (val) {         this.currentValue += val;         this.$emit('number', this.currentValue);       }     }   } </script>

在 model 選項里,就可以指定 prop 和 event 的名字了,而不一定非要用 value 和 input,因為這兩個名字在一些原生表單元素里,有其它用處。

.sync 修飾符

如果你使用過 Vue.js 1.x,一定對 .sync 不陌生。在 1.x 里,可以使用 .sync 雙向綁定數據,也就是父組件或子組件都能修改這個數據,是雙向響應的。在 Vue.js 2.x 里廢棄了這種用法,目的是盡可能將父子組件解耦,避免子組件無意中修改了父組件的狀態。

不過在 Vue.js 2.3.0 版本,又增加了 .sync 修飾符,但它的用法與 1.x 的不完全相同。2.x 的 .sync 不是真正的雙向綁定,而是一個語法糖,修改數據還是在父組件完成的,并非在子組件。

仍然是數字選擇器的示例,這次不用 v-model,而是用 .sync,可以這樣改寫:

<template>   <div>     <button @click="increase(-1)">減 1</button>     <span >{{ value }}</span>     <button @click="increase(1)">加 1</button>   </div> </template> <script>   export default {     name: 'InputNumber',     props: {       value: {         type: Number       }     },     methods: {       increase (val) {         this.$emit('update:value', this.value + val);       }     }   } </script>

用例:

<template>   <InputNumber :value.sync="value" /> </template> <script>   import InputNumber from '../components/input-number/input-number.vue';    export default {     components: { InputNumber },     data () {       return {         value: 1       }     }   } </script>

看起來要比 v-model 的實現簡單多,實現的效果是一樣的。v-model 在一個組件中只能有一個,但 .sync 可以設置很多個。.sync 雖好,但也有限制,比如:

  • 不能和表達式一起使用(如 v-bind:title.sync="doc.title + '!'" 是無效的);

  • 不能用在字面量對象上(如 v-bind.sync="{ title: doc.title }" 是無法正常工作的)。

其它簡單的常用屬性和方法

// console.log(vm.$root);  vm.$root    //實例對象  vm.$el  //根元素(真實的DOM元素) // console.log(vm.$el);  vm.$el.innerHTML    //得到根元素(真實的DOM元素)中的內容 // console.log(vm.$el.innerHTML);  vm.$data    //實例下的data對象 // console.log(vm.$data);  vm.$options     //實例下的掛載項 // console.log(vm.$options);  vm.$props   //組件之間通信的數據 // console.log(vm.$props);  vm.$parent      //在組件中,指父元素 // console.log(vm.$parent);  vm.$children    //在組件中,指子代元素 // console.log(vm.$children);  vm.$attrs   //用來獲取父組件傳遞過來的所有屬性 // console.log(vm.$attrs);  vm.$listeners   //用來獲取父組件傳遞過來的所有方法 // console.log(vm.$listeners);  vm.$slots   //組件中的插槽 // console.log(vm.$slots);  vm.$scopedSlots     //用來訪問作用域插槽 // console.log(vm.$scopedSlots);  vm.$refs    //用來定位DOM元素(使用ref進行追蹤) // console.log(vm.$refs);  vm.$watch   //用于監聽數據(在vue文件中使用后會自動銷毀) // console.log(vm.$watch);  vm.$emit    //用于派發事件(常用于數據通信) // console.log(vm.$emit);  vm.$on  //用于監聽事件的派發 // console.log(vm.$on);  vm.$once    //只監聽事件一次(之后不監聽) // console.log(vm.$once);  //生命周期 beforeCreate() { } created() { } beforeMount() { } mounted() { } beforeUpdate() { } updated() { } beforeDestroy() { } destroyed() { }

(學習視頻分享:vuejs教程、web前端)

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
欧洲精品码一区二区三区| 日本打扑克啪啪超爽网站| 亚洲精品久久久久无码AV片软件 | 99热门精品一区二区三区无码| 亚洲国产成人精品无码区在线网站| 亚洲国产成人丁香五月激情| 野花韩国视频观看免费高清的| 西西人体444WWW高清大胆| 亚洲AV永久无码精品网站| 亚洲一区二区三区 无码| 制服 丝袜 人妻 专区一本| APPSTORE美区免费| 丰满少妇女人A毛片视频| 国产午夜三级一区二区三| 粉嫩av一区二区三区| 国产另类TS人妖一区二区| 久久99精品久久久久婷婷暖| 男生把感叹号放进女生的括号| 日产乱码一二三区别免费下| 性XXXX欧美老妇506070| 一二三四免费观看在线6| JAPANESE日本熟妇伦| 国产成人无码H在线观看网站| 国内国外日产一区二区| 国产乱子伦农村叉叉叉| 久久久久久精品免费免费R| 欧美熟VIDEOS肥婆| 无忧传媒剧国产剧情MV| 熟女少妇精品一区二区| 亚洲AV综合色区无码4区| 中文天堂在线WWW最新版官网| 成人免费无码AV| 好爽…又高潮了毛片无广告| 免费女人高潮流视频在线观看| 日韩人妻精品一区二区三区视频 | 亚洲AV无码成H人在线观看| 在线观看特色大片免费网站| 一二三四电影在线观看视频播放免| WWW.五月激情.COM| 国产熟女一区视频在线播放| 噜噜狠狠色综合久色AⅤ五区| 日韩人妻一区二区三区免费 | 果冻传媒AⅤ毛片无码蜜桃| 国产猛男GAY1069视频| 久久躁狠狠躁夜夜AV| 久久青草免费福利资源站| 人妻有码中文字幕| 日韩人妻无码精品无码中文字幕| 亚洲AV无码乱码| JAPANESE中国丰满少妇| 国偷自产一区二区免费视频| 欧美日韩免费观看| 亚洲AV无码一区二区三区性色| AE成品免费下载网站| 国产啪亚洲国产精品无码| 男男开小嫩苞好深啊H窑子开| 婷婷97狠狠色综合| 新妺妺窝人体色WWW| 1313午夜精品理论片| 国产精品无码AV在线播放| 美女被强奸到高潮在线| 五月丁香综合激情六月久久| 99国产精品白浆无码流出| 国内大量揄拍人妻在线视频| 人妻无码ΑV中文字幕琪琪布| 亚洲寂寞女人AⅤ| 岛国精品一区免费视频在线| 国产激情无码一区二区APP| 国产午夜不卡AV免费| 欧美激情一区蜜桃传媒| 亚洲精品人成无码中文毛片| 大又大又粗又硬又爽少妇毛片| 狂躁美女大BBBBBB视频1| 女人自熨全过程直播| 亚洲AV永久无码精品桃花岛知道| 插插插精品亚洲一区| 久久午夜无码鲁丝片秋霞小说| 无码人妻丰满熟妇啪啪7774| BDSM女囚BDSMTV| 久久国产情侣露脸精品| 玩弄粉嫩少妇高潮出白浆AⅤ| 亚洲变态另类调教久久久| 成人无码AⅤ在线播放| 裸体美女扒开下部无遮挡网站免费| 性高湖久久久久久久久AAAAA| 被滋润的少妇疯狂呻吟| 久久婷婷五月综合国产| 亚洲AV色香蕉一区二区三区| 丰满人妻被黑人连续中出| 欧美 日韩 国产 亚洲 色| 亚洲中文AⅤ中文字幕| 国产无人区码一码二码三MBA| 日韩欧美人妻系列中文字幕一区二区三区 | 欧洲最猛黑人XXXⅩ猛男欧| 婬乱丰满熟妇XXXXX| 精品人妻系列无码人妻免费视频 | 夜鲁鲁鲁夜夜综合视频欧美| 国产亚洲欧洲AⅤ综合一区| 少妇乱人伦无码视频| AV无码一区二区大桥久未| 麻豆我精产国品一二三产区区别| 亚洲AV无码一级毛片少妇| 国产激情久久久久影院蜜桃AV | 中文字幕无码不卡一区二区三区| 精品人妻无码区在线视频| 亚洲AV成人无码久久WWW| 国产94在线 | 亚洲| 人人妻人人爽人人做夜欢视频九色| 中国女人黑森林毛耸耸| 久久精品A亚洲国产V高清不卡| 亚洲AV无码久久久久久精品| 国产乱XXXXX97国语对白| 少妇又紧又深又湿又爽视频| 插插射啊爱视频日A级| 欧美性爱在线视频| AV色欲无码人妻中文字幕| 嫩小槡BBBB槡BBBB槡| 在办公室伦流澡到高潮H| 久久麻豆成人精品| 一二三四免费观看在线中文版| 久久精品国产男包| 亚洲午夜久久久久久噜噜噜| 久久AV高潮AV无码AV喷吹| 亚洲精品国产AV现线| 激情内射亚州一区二区三区爱妻 | 久久精品国产导航| 亚洲乱码日产精品BD在线下载| 黑人又大又粗又硬XXXXX免费| 亚洲AV无码一区二区三区国产 | 人妻人人添人人爽夜夜欢视频| 99久久精品无码一区二区三区 | 99国产欧美久久久精品| 欧美XXXX做受欧美88BBW| 99精品久久久久中文字幕| 欧美日韩人妻精品| 扒开粉嫩的小缝隙喷白浆| 日本适合十八岁以上的护肤品男 | 无码男男作爱G片在线观看| 国产精品任我爽爆在线播放| 午夜精品久久久久久不卡| 国产人成精品香港三级在线| 亚洲AV自慰白浆喷水网站| 精品深夜av无码一区二区老年| 亚洲综合大片6999| 男女作爱免费网站在线观看| FREE东北女人自拍HD| 日本少妇人妻XXXXⅩ18| 国产成人AV大片大片在线播放| 无人区码一码二码高高| 黑人顶到深处高潮颤抖| 艳妇乳肉豪妇荡乳AV| 年轻的少妇A级伦理| 把八重神子焯出白水怎么办| 少妇一级无码精品| 国产中年熟女高潮大集合| 亚洲日韩AV一区二区三区中文| 久久人妻无码一区二区三区av| 2018国产精华国产精品| 人人添人人澡人人澡人人人人| 国产AV熟女一区二区三区| 亚洲∧V久久久无码精品| 精品亚洲成A人无码成A在线观看| 中文无码一区二区不卡ΑV| 秋霞A级毛片在线看| 国产成人精品无码青草| 亚洲AV无码成电影在线播放| 久久久久噜噜噜亚洲熟女综合| 99久热RE在线精品99 6热 | 大屁股熟女一区二区三区| 午夜福利AV无码一区二区| 精品无人区卡一卡二卡三乱码| 1000部又爽又黄无遮挡的视频| 日韩熟妇αv无码激情视频| 国产日韩精品欧美一区喷水| 野花香在线视频免费观看第一集 | 成年女人毛片视频免费| 无码少妇一区二区三区浪潮av | 中文字幕乱码人妻一区二区三区| 人妻少妇精品中文字幕AV| 国产拍揄自揄精品视频| 真实国产乱子伦精品一区二区三区 | 色欲AV伊人久久大香线蕉影院| 996热RE视频精品视频这里| 日韩欧群交P片内射中文| 国外AV无码精品国产精品| 综合色天天鬼久久鬼色| 丝袜老师办公室里做好紧好爽| 精品久久久久成人码免费动漫| av 成人 亚洲无码| 无人区乱码一区二区三区| 久久狼人大香伊蕉国产| 成人爽A毛片在线视频淮北| 亚洲AV伊人久久青青草原视色| 女人被爽到呻吟GIF动态图| 国产精品久久久久久超碰| 曰本BBWW高潮BBWR| 天干天干天啪啪夜爽爽AV| 久久亚洲AV无码西西人体| 丰满人妻熟妇乱又伦精品软件| 亚洲色欲色欲色欲WWW|