iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0

既然有了新增和刪除,那麼我們就來製作修改的部分

首先先讓我們將下圖的部分:
https://ithelp.ithome.com.tw/upload/images/20240921/20169170LR0DuXB0ND.png

改成下面的句子:

<font-awesome-icon class="cursor-pointer text-gray-500" :icon="item.edit ? 'fa-solid fa-floppy-disk' : 'fa-solid fa-pen-to-square'" @click="edit(item)" />

我們使用三元運算子去判斷該物件(item)的edit屬性是否為true,如果為true就顯示fa-solid fa-floppy-disk,如果是fasle就顯示fa-solid fa-pen-to-square

值得注意的是我們在這裡使用第三個icon圖標,所以我們也需要到main.js去註冊第三個圖標:

https://ithelp.ithome.com.tw/upload/images/20240921/20169170tzl05I8cAC.png

並且我們也像刪除那樣寫一個click事件,click事件綁定的function名為edit,並將item帶入該function的參數中,接下來讓我們完成edit這個function:

const edit = (item) => {
	if (item.edit) {
		if (item.name === '') {
			let message = 修改失敗,內容不可為空;
			alert(message);
		} else {
			item.edit = false;
		}
	} else {
		toDoList.value.forEach((todo) => {
			todo.edit = false;
		});
		item.edit = true;
	}
};

edit function先是判斷參數內物件的edit的布林值,若一開始為false(不可修改的狀態改為可修改的狀態),則是會遍歷(forEach)toDoList中的每一個物件(todo),並將每一個物件的edit都改為false,然後在將帶入參數的該物件的 edit 設為true,這樣可以確保toDoList每一個物件的edit 都會是 false,只有該修改物件的edit會是true,而如果一開始物件的edit是ture的話(從可修改狀態改回不可修改的狀態),那麼就會先判斷物件的name屬性是否為空值,如果是空值的話我們就會出現一個’修改失敗,內容不可為空’的警告,那如果物件不為空呢?那麼物件的edit屬性就會變回flasle,這時我們可以先簡單測試一下icon的部分有沒有根據物件的edit屬性做改變

https://ithelp.ithome.com.tw/upload/images/20240921/20169170g7hsdF5cHO.png

我們可以看到我們新增了兩項代辦事項,而我們點擊第二件事項的時候按鈕從修改按鈕變成儲存按鈕,不過這時候我們才完成了一半,如果你把代辦事項中的內容清空在按按鈕會沒有反應,這是因為我們還沒有對代辦事項的input框做處理,所以接下來我們要來做剩下的另一半:

https://ithelp.ithome.com.tw/upload/images/20240921/20169170c7BKM73PBT.png

讓我們將上面這句話改為:

<a-input class="p-[5px] truncate" :bordered="false" :value="[item.name](http://item.name/)" :readonly="!item.edit" @input="handleInput(item, $event)" />

我們給input框加上了一個readonly屬性,也就是說在item的edit屬性為false的時候readonly屬性就會啟用,這樣使用者就沒辦法去隨意改動物件的edit屬性為false狀態的input框然後我們在input事件上面增加一個handleInput的function,帶入著參數是指定的物件(item)還有一個event:

const handleInput = (item, event) => {
	item.name = event.target.value;
};

handleInput 的內容其實很簡單,我們就是將物件的name屬性改為event.target.value,這樣我們才能將input的內容和物件的name屬性作綁定,也才能夠在item.name為空字串時成功觸發alert事件

https://ithelp.ithome.com.tw/upload/images/20240921/20169170ON8spHT5on.png

例子中我們在第二個代辦事項沒有輸入任何值然後按儲存的同時,就會跳出警示窗告訴你沒有輸入內容了。

基本上修改功能就完成了,整個代辦事項我們也完成了差不多了,明天我們可以實作如何將代辦事項的資料進行保存!


上一篇
和2魚坐牢的第十一天-todolist之刪除功能
下一篇
和2魚坐牢的第十三天-todolist之儲存功能
系列文
和鱷魚組長的坐牢30天之vue的簡易todolist和Astro的簡易部落格實現30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言