亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Vuejs 實現簡易 todoList 功能 與 組件實例代碼

2019-11-19 12:59:02
字體:
來源:轉載
供稿:網友

todoList

結合之前 Vuejs 基礎與語法
•使用 v-model 雙向綁定 input 輸入內容與數據 data
•使用 @click 和 methods 關聯事件
•使用 v-for 進行數據循環展示

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>TodoList</title> <script src="./vue.js"></script></head><body> <div id="root">  <div>   <input v-model="inputValue"/>   <button @click="handleSubmit">提交</button>  </div>  <ul>   <li v-for="(item,index) of list" :key="index">    {{item}}   </li>  </ul> </div> <script>  new Vue({   el: "#root",   data: {    inputValue: '',    list: []   },   methods: {    handleSubmit: function(){     this.list.push(this.inputValue)     this.inputValue = ''    }   }  }) </script></body></html>

JSbin 預覽

todoList 組件拆分

Vuejs 組件相關 詳細參考組件基礎

全局組件

注冊全局組件,并在 HTML 中通過模板調用組件

//注冊全局組件  Vue.component('todo-item',{   template: '<li>item</li>'  })  <ul>   <!-- <li v-for="(item,index) of list" :key="index">    {{item}}   </li> -->   <todo-item></todo-item>   <!-- 通過模板使用組件 -->  </ul>

JSbin 預覽

局部組件

在注冊了局部組件之后,直接通過模板調用是不可以的,必須要在最外層的 Vue 的實例中添加 components: { }進行組件聲明。 

//注冊局部組件  var TodoItem = {   template: '<li>item</li>'  }  new Vue({   el: "#root",   components: {  //局部組件需要聲明的 components    'todo-item': TodoItem   },   data: {    inputValue: '',    list: []   },   methods: {    handleSubmit: function(){     this.list.push(this.inputValue)     this.inputValue = ''    }   }  })

JSbin 預覽

即通過局部注冊的組件,需要在其他的 Vue 實例中使用該局部組件。必須使用 components 對該局部組件進行注冊。
上面的實例中,要在 Vue 實例中使用 TodoItem 這個局部組件,就通過 todo-item 這個標簽來使用。當在實例中 注冊好了以后,才可以在模板里面使用這個標簽。這樣就算正確的使用了局部組件。

外部傳遞參數

給 todo-item 標簽添加 :content 屬性,值為循環的每一項的內容 "item",

這樣就可以吧 content 傳遞給 todo-item 這個組件

<todo-item v-for="(item,index) of list" :key="index" :content="item"></todo-item>

但是直接將組件改成是不行的

  Vue.component('todo-item',{   template: '<li>{{content}}</li>'  })

需要讓組件接收屬性,所以要在todo-item組件里面定義props屬性,其值為一個數組 'content' 。
其含義是,該組件接收從外部傳遞的進來的名字叫做 content 的屬性

  Vue.component('todo-item',{   props: ['content'],   template: '<li>{{content}}</li>'  })

JSbin 預覽

組件與實例的關系

Vue 之中,每一個組件其實也是一個 Vue 的實例。因此在 Vue 項目中,是一個個實例構建而成的。
因此組件之中,也可以綁定 @click 事件,添加 methods 屬性。

 Vue.component('todo-item',{   props: ['content'],   template: '<li @click="handleClick">{{content}}</li>',   methods: {    handleClick: function(){     alert('clicked')    }   }  })

JSbin 預覽

同樣的實例也可以被稱作一個組件,那么我們這個根實例當中的 template 模板是什么呢 ?
如果一個 Vue 實例沒有模板,會到掛載點去找。如下實例,根實例會找到 #root 下面掛載點的所有內容作為模板。

new Vue({   el: "#root",   data: {    inputValue: '',    list: []   },   methods: {    handleSubmit: function(){     this.list.push(this.inputValue)     this.inputValue = ''    }   }  })

為 todoList 添加刪除功能

通過 發布 / 訂閱,當子組件點擊時,通知父組件把數據刪除掉。在子組件中,發布自定義一個 'delete' 事件。調用 this.$emit 方法,并傳遞 index 的值。

子組件向外部進行發布

  //子組件  Vue.component('todo-item',{   props: ['content','index'],   template: '<li @click="handleClick">{{content}}</li>',   methods: {    handleClick: function(){     //發布     this.$emit('delete', this.index)    }   }  })

父組件在模板里創建子組件的時候,監聽子組件向外觸發的 delete 事件,如果監聽到 delete 事件,執行 handleDelete 函數。

   <todo-item v-for="(item,index) of list"         :key="index"         :content="item"         :index="index"         @delete="handleDelete"> <!-- 監聽delete事件 -->   </todo-item>   <!-- 通過模板使用組件 -->

然后在父組件的 methods 中,寫好 handleDelete 方法。

  //最外層實例,父組件  new Vue({   el: "#root",   data: {    inputValue: '',    list: []   },   methods: {    handleSubmit: function(){     this.list.push(this.inputValue)     this.inputValue = ''    },    handleDelete: function(index){     this.list.splice(index,1) //使用splice方法刪除list    }   }  })

總結

以上所述是小編給大家介紹的Vuejs 實現簡易 todoList 功能 與 組件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品激情自拍| 欧美日韩激情网| 日本精品视频在线观看| 色婷婷av一区二区三区在线观看| 中文字幕一精品亚洲无线一区| 国产97色在线|日韩| 亚洲国产精品久久久久久| 精品久久久久久久久久国产| 不卡伊人av在线播放| 国产精品狠色婷| 国产在线98福利播放视频| 少妇久久久久久| 日韩大陆毛片av| 久久久视频精品| 精品久久久国产| 欧美高清视频在线播放| 91影视免费在线观看| 久久综合伊人77777| 精品国产一区二区三区在线观看| 亚洲a区在线视频| 一区二区三区精品99久久| 亚洲精品suv精品一区二区| 国产a级全部精品| 激情成人中文字幕| 久久夜色精品国产欧美乱| 成人有码在线视频| 91精品国产高清自在线| 亚洲第一精品久久忘忧草社区| 69视频在线免费观看| 亚洲xxx大片| 国产精品91在线观看| 国产网站欧美日韩免费精品在线观看| 亚洲少妇激情视频| 国产香蕉97碰碰久久人人| 日韩一区二区在线视频| 欧美麻豆久久久久久中文| 91色p视频在线| 亚洲人成在线免费观看| 欧美激情亚洲自拍| 亚洲人成伊人成综合网久久久| 8x拔播拔播x8国产精品| 久久精品亚洲精品| 亚洲精品少妇网址| 日韩成人激情在线| 亚洲码在线观看| 久久91精品国产91久久跳| 午夜精品久久久久久久久久久久| 欧美黑人一区二区三区| 国产精品永久在线| 国产精品露脸自拍| 国产精品久久9| 日韩精品视频在线播放| 一区二区三区www| 久久精品视频亚洲| 亚洲xxxx妇黄裸体| 国产精品免费久久久| 欧美另类xxx| 青草青草久热精品视频在线观看| 欧美一级电影免费在线观看| 91在线色戒在线| 中文字幕亚洲二区| 欧美做爰性生交视频| 大桥未久av一区二区三区| 91久久国产婷婷一区二区| 午夜精品国产精品大乳美女| 69视频在线播放| 亚洲大胆人体在线| 久久精品成人欧美大片| 在线激情影院一区| 91久久久久久久久| 国产一区二区av| 国产日韩换脸av一区在线观看| 精品国产视频在线| 粉嫩老牛aⅴ一区二区三区| 国产一区二区三区在线看| 自拍偷拍免费精品| 亚洲一区二区福利| 亚洲成人av中文字幕| 国产精品自产拍在线观看| 国产成人鲁鲁免费视频a| 91在线精品视频| 91性高湖久久久久久久久_久久99| 国产www精品| 中文字幕日韩精品在线观看| 亚洲欧洲在线视频| 国产精品久久77777| 欧美华人在线视频| 456亚洲影院| 国产精品久久不能| 日本精品久久电影| 欧美一区二区三区免费视| 日本人成精品视频在线| 亚洲精品国产精品国自产在线| 日韩欧美视频一区二区三区| 欧美美女操人视频| 欧美精品在线观看| 亚洲国产精品小视频| 精品国产乱码久久久久久婷婷| 96精品久久久久中文字幕| 亚洲天堂免费观看| 亚洲护士老师的毛茸茸最新章节| 97精品视频在线观看| 亚洲tv在线观看| 国产成人精品电影久久久| 国产亚洲激情视频在线| 国产一区私人高清影院| 夜夜狂射影院欧美极品| 国产一区二区在线免费| xxxxx91麻豆| 高清一区二区三区日本久| 亚洲专区中文字幕| 国产精品黄色影片导航在线观看| 亚洲片在线资源| 精品日韩美女的视频高清| 日韩中文视频免费在线观看| 精品日韩美女的视频高清| 欧美日韩国产页| 欧美一区二区三区免费视| 亚洲一区二区三区毛片| 久久免费视频在线| 3344国产精品免费看| 亚洲第一免费网站| 97视频免费在线观看| 亚洲国产精品va在线| 97精品视频在线播放| 国产精品老牛影院在线观看| 日韩av综合中文字幕| 欧美大秀在线观看| 亚洲一区二区三区在线视频| 欧美激情在线视频二区| 97精品视频在线播放| 久久久久久91香蕉国产| 综合久久五月天| 亚洲人成在线一二| 国产美女高潮久久白浆| 国产精品久久国产精品99gif| 中文字幕在线看视频国产欧美| 亚洲欧美中文日韩在线v日本| 国产精品69精品一区二区三区| 最近中文字幕日韩精品| 亚洲日韩欧美视频一区| 国产日韩欧美在线| 亚洲国产精品网站| 久久在精品线影院精品国产| 欧美又大粗又爽又黄大片视频| 日韩av大片免费看| 国内久久久精品| 欧美一区深夜视频| 欧美亚洲一区在线| 国产成人一区二区三区小说| 日韩经典中文字幕在线观看| 亚洲欧美中文字幕在线一区| 国产精品一区二区三区久久久| 久久精品国产亚洲一区二区| 欧美日韩第一视频| 九九热这里只有精品免费看| 日韩视频在线一区| 欧美视频国产精品| 欧美性受xxxx白人性爽| 欧美电影第一页| 欧美性xxxx在线播放| 动漫精品一区二区| 国产97色在线| 中文字幕亚洲综合|