亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue組件編寫之todolist組件實例詳解

發布時間:2020-09-04 23:40:15 來源:腳本之家 閱讀:177 作者:mrr 欄目:web開發

我們在topNav這個頁面上插入一個todolist子組件

我不知道怎么回事,這里的markdown的代碼總是串行。。所以代碼看得不舒服,見諒啊,我最后會放github的源代碼地址。

1. 父組件topNav中注冊子組件,引入子組件

<template>
 <div>
  <p>下面這一行就是定義的組件名稱</p>
  <todo-list></todo-list>
  <router-view></router-view>
 </div>
</template>
<script>
/*

    1. 通過import來引入我們的子組件drawerLayout

    2. 引入子組件,并重新取名為todoList,然后在components組冊一下

    3.在我們的template中按照html標簽的形式使用組件,todoList就是<todo-list>

注意:

    (1) 子組件的名字無所謂,但是我們引入的那個子組件名todoList,第二個單詞的首字母一定要大寫(不然你會踩坑的)

    (2) 使用標簽時,todoList,就是todo-list,就是寫成駝峰命名法(通俗說就是在第二個單詞的大寫首字母改成小寫形式,然后前面加一個 “-”)

*/
import todoList from '../components/todoList.vue'
 export default {
  components: {
   todoList
  },
  data() {
   return {
   };
  }
 }
</script>

2. 先看看組件的功能

首先我們先大體看看組件長啥樣,然后我才去構思如何寫

首先我們看到的是一個input輸入框,默認顯示edit..,當我們沒有添加數據的時候,下方顯示的“暫無內容”

vue組件編寫之todolist組件實例詳解 

接著,我們輸入數據“第一個例子”然后敲擊回車,就會出現一行list

list包括一個單選框,文字,還有一個刪除的按鈕

vue組件編寫之todolist組件實例詳解 

那怎么刪除呢?那既然要做,肯定稍微做多一點功能,把一些內部指令都用一下,我們設置的刪除規則是

先選中該list,然后點擊刪除,然后該條記錄就沒有了,如果刪除這個數據后,就沒有list了,那“暫無內容”就要顯示出來了

vue組件編寫之todolist組件實例詳解

vue組件編寫之todolist組件實例詳解

3. 開始寫我們的todo子組件了

關于代碼中的樣式我放在最后,所以此刻你可以忽略一些class

我們先把這個todolist的大體框架搭好,然后往里面增加功能

<template>
<div class="ex1">
  <div class="input-text">
 <label for="inputNum">請輸入:</label>
 <input type="text" 
    id="inputNum" 
    name="inputNum" 
    placeholder="edit..">

 <!--列表內容-->
 <ul>
  <li>
   <input type="checkbox" >
   <span>dd</span>
   <button>刪除</button>
  </li>
 </ul>
 <p class="empty" v-if="!inputList.length">暫無內容</p>
  </div>
</div>
</template>
<script>
 export default {
  data () {
   return {
    inputList: [],
    inputItem: {
     content: '',
  finished: false,
  deleted: false
 }
   }
  },
  methods: {
   //將輸入框的數據添加到list中  
   addItem: function() {}
   //改變選中狀態
   changeState: function(index) {},
   //刪除列表元素
   deleteItem: function(index) {}
  }
 }
</script>

vue組件編寫之todolist組件實例詳解 

接下來我就不針對每一小步都給出代碼來更新了,因為篇幅太大,我會更具一個功能塊來寫(我會很詳細的)

首先我們先理清以下思路

在輸入框中輸入數據,按下回車就會在下方顯示一行list列表(包括一個單選框,輸入的數據,藍色操作按鈕)

將輸入框的值和inputItem.content進行雙向綁定

給輸入框綁定回車事件(@keydown.13)到addItem方法中,每次輸入回車,就將輸入框的數據添加進list列表中(inputList數組中)

利用v-for指令遍歷inputList中的值并顯示

選中單選框,list的內容變成刪除效果(中間橫線劃過),藍色操作按鈕變成紅色刪除按鈕,點擊按鈕,就會刪除該列list

將單選框的checked和inputItem的finished進行綁定,綁定后就可以利用這個finished來做一些別的事了

剛添加進列表內容的list的按鈕是藍色操作按鈕,如果我們要通過單選框的選中與否的兩種狀態來使content的子添加和移除一個class(就是上面說的刪除效果),以及將按鈕變成紅色的刪除按鈕,那就可以綁定changeState方法來操作

那刪除功能呢?首先,我們要選中該行list,再點擊刪除才能刪除該行數據,對吧。所以我們將按鈕綁定一deleteItem方法,方法做的事情就是先檢測該行的finished是否是true,如果是true,那么我們就刪除該行數據

我們先完成添加功能:在輸入框輸入數據,回車,會在下面顯示一行列表(包括單選框,輸入的數據,刪除按鈕)

<template>
<div class="ex1">
  <div class="input-text">
 <label for="inputNum">請輸入:</label>
 
  <!--@keydow.13表示回車的事件-->
  <!--v-model是為了讓輸入的數據和inputItem.content同步-->
  
  <input type="text" id="inputNum" name="inputNum" placeholder="edit.."
   @keydown.13="addItem" v-model="inputItem.content" class="edit"
  >
  <!--列表內容-->
  <ul class="task">
   <li v-for="(key, item) in inputList">
    <input type="checkbox" :checked="item.finished">
    <span>{{key.content}}</span>
    <button class="del">刪除</button>
   </li>
  </ul>
 <p class="empty" v-if="!inputList.length">暫無內容</p>
  </div>
</div>
</template>
<script>
 export default {
  data () {...省略  },
  methods: {
   addItem: function() {
     this.inputList.push(this.inputItem);
     /*
     為什么我們要對inputItem再次初始化?
     解答:因為每次在輸入框中輸入數據,都會同時改變inputItem的content屬性,
     然后我們點擊回車,該inputItem的整個對象都添加進inputList中,
     按正常邏輯來說,inputList內的內容和inputItem是沒有聯系了。
     如果我們此時不對inputItem進行再次初始化,那么就會發現你再次在輸入框中輸入數據的時候,
     會同時改變下面的list的值,簡易你們把初始化的代碼去掉,運行下試試看!
     */
  this.inputItem = {
      content: '',
      finished: false,
      deleted: false
  };
   },
   //改變選中狀態
   changeState: function(index) {},
   //刪除列表元素
   deleteItem: function(index) {}
  }
 }
</script>

我們先看看列表內容的代碼

<!--列表內容-->
<ul class="task">
 <li v-for="(item, index) in inputList">
  <!--單選框綁定了item.finished,還添加了點擊事件-->
  <input type="checkbox"
  :checked="item.finished"
  @click="changeState(index)"
  >
  <!--通過item.finished值來動態綁定class-->
  <span :class="{'finish':item.finished}">{{item.content}}</span>
  <!--按鈕的顏色通過動態添加class來實現,然后按鈕的文本通過改變isDel來實現,isDel的改變也是通過changeState方法來操作的-->
  <button @click="deleteItem(index)"
   class="del"
   :class="{'native':item.finished === true}"
  >{{isDel}}</button>
 </li>
</ul>
<p class="empty" v-if="!inputList.length">暫無內容</p>

然后我們講解changeState方法

//改變選中狀態
   changeState: function (index) {
    // this.inputList[index].finished = true 錯誤:這樣如果點擊第二次,無法回到false,就會一直true狀態
    this.inputList[index].finished = !this.inputList[index].finished;
    // 根據finished的值來對應的修改isDel的值,isDel的值就是按鈕的文本
    if (this.inputList[index].finished) {
   this.isDel = '刪除'
    }else {
     this.isDel = '操作'
 }
   },
//刪除列表元素
   deleteItem: function (index) {
   if (this.inputList[index].finished) {
    his.inputList.splice(index,1);
   }
   }

總結

以上所述是小編給大家介紹的vue組件編寫之todolist組件實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郯城县| 辽阳县| 巴塘县| 武安市| 运城市| 墨竹工卡县| 隆昌县| 鹰潭市| 囊谦县| 汝阳县| 临洮县| 柳江县| 沙湾县| 唐河县| 泸西县| 游戏| 南昌市| 北碚区| 大安市| 武功县| 丹东市| 新郑市| 淮滨县| 巴南区| 十堰市| 遂溪县| 尉犁县| 兴海县| 子长县| 蓬溪县| 荆州市| 诸城市| 东乌珠穆沁旗| 绵阳市| 铁岭县| 尖扎县| 丰都县| 林甸县| 昌都县| 呼玛县| 扬中市|