您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關vue指令以及dom操作的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
“AngularJS 通過被稱為 指令 的新屬性來擴展 HTML。AngularJS 通過內置的指令來為應用添加功能。AngularJS 允許你自定義指令。”
這是我最初接觸“指令”這個詞。還記得那時候,ng大行其道的時候,我特別好奇怎么給一個div加一個"ng-app" 就能解決這么多問題。
后來隨著前端工作的深入,我用了jq的data-attr并且學會了jq的插件使用。但,這這并不能讓我把它“指令”聯想到一塊,后來插件需要給節點加個標示來顯示某種“狀態管理” 我用了class 例如:pending,loading-end.
但是感覺和樣式混在一塊總是感覺不自在,后來我直接添加一個自定義標簽 例如:attr-pending,attr-loading-end,通過dom上的自定義標簽來標示某個狀態是否完成。
在這個時候,發現"attr-pending,attr-loading-end"與“ng-app,ng-html”什么的非常類似,才恍然大悟,其實“指令”也可以理解為"標識",而具體的邏輯與它無關,它只是一個“標識”罷了。至于,ng-repeat,ng-click 同樣可以理解某個程序在dom上一個“標識” 程序通過它來掛載某個功能。
現在接觸了vue,vue比ng在開發上來說代碼量很明顯少了很多,“指令”一般開發人員不需要自己來實現。但是如果是開發一套ui交互的組件,還是很需要它。
bind: 僅調用一次,當指令第一次綁定元素的時候。
update: 第一次是緊跟在 bind 之后調用,獲得的參數是綁定的初始值;以后每當綁定的值發生變化就會被調用,獲得新值與舊值兩個參數。
unbind:僅調用一次,當指令解綁元素的時候。
1.指令的注冊
指令跟組件一樣需要注冊才能使用,同樣有兩種方式,一種是全局注冊:
Vue.directive('dirName',function(){ //定義指令 }); 另外一種是局部注冊: new Vue({ directives:{ dirName:{ //定義指令 } } });
2.可在指令函數配置中直接修改DOM[支持數據驅動] input里面的值修改的時候#demo里面的vue也會自動同步
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="http://cdnjs.cloudflare.com/ajax/libs/vue/0.12.16/vue.min.js"></script> </head> <body> <div> <p>展示vue指令----vue和元素dom操作的完美結合【拓展】</p> <p>{{msg}}</p> <input type="text" v-model="msg"> </div> <div id="demo" v-demo-directive="LightSlateGray : msg"></div> <script> Vue.directive('demoDirective', { bind: function () { this.el.style.color = '#fff' this.el.style.backgroundColor = this.arg }, update: function (value) { this.el.innerHTML = 'name - ' + this.name + '<br>' + 'raw - ' + this.raw + '<br>' + 'expression - ' + this.expression + '<br>' + 'argument - ' + this.arg + '<br>' + 'value - ' + value } }); var demo = new Vue({ el: 'body', data: { msg: 'hello!' } }) </script> </body> </html>
感謝各位的閱讀!關于“vue指令以及dom操作的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。