最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue使用數(shù)組splice方法失效,且總刪除最后一項的問題及解決

 更新時間:2022年09月10日 10:20:42   作者:白佯們班的小莫  
這篇文章主要介紹了vue使用數(shù)組splice方法失效,且總刪除最后一項的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

使用數(shù)組splice方法失效,總刪除最后一項的問題

今天在寫項目的時候,遇到一個很簡單的需求,下圖,點擊添加標簽,左邊出現(xiàn)一個可以輸入的標簽,點擊刪除按鈕, 就能刪除當前標簽,很簡單的需求,我卻搞了一個多小時(哎…新手愚笨啊)

今天在寫項目的時候

一看到這個我的思路就是點擊添加標簽,把新增的節(jié)點push到自己定義的數(shù)組里,然后渲染出來,點擊刪除按鈕,用splice方法從數(shù)組中刪除掉當前的節(jié)點(很簡單,很明確的思路嘛,但是卻事與愿違)

		<div 
             class="addtag"
              v-for="(i,index) in tags"
              :key="i.index"
          >
	         <div v-html="i.tag" class="tags">{{i.tag}}</div>
	         <span @click='deleteTag(index)' class='fa fa-close'></span>
   		</div>
    	<span v-show='tags.length > 4 ? false : true' @click="addTag" class="fa fa-plus-square-o">添加標簽</span>
		// 點擊添加標簽
        addTag(){
            this.tags.push({"tag":"<input type='text' />"})
        },
        //刪除標簽
        deleteTag(index){
            this.tags.splice(index, 1)
        },

當我點擊刪除的時候,總是刪除的是最后一個添加的節(jié)點,也就是新添加的那一個,我試了好多次,還是不行,回頭又看了好多次我的方法,以為下標傳錯了什么之類的,但是我反復看了四五遍,沒有發(fā)現(xiàn)錯誤。

然后又對splice方法進行了復習,又查閱了此方法還是不行。

于是我去網(wǎng)上搜(新手嘛,遇到了問題,你懂得…),網(wǎng)上也沒有相關(guān)問題,只有一個說到了,說是vue的渲染問題,當你去刪除標簽時,他重復執(zhí)行了方法,需要添加一個事件去重的方法,也沒太看懂,就去翻閱了官網(wǎng),查看了vue的v-for渲染和唯一的key值。

我的問題之所以會產(chǎn)生,是因為在于key的綁定問題,我只是用下標來綁定每一個標簽的key,而沒有與數(shù)組中元素掛鉤,因此當刪除數(shù)組元素時,vue會采用一種叫做’就地復用‘的原則,將旁邊的元素直接拿過來使用,而vue官方有這樣一句話(官方文檔的重要性啊…):

我的解決辦法是

push的時候為每一條元素添加一個id值,key值取它的id,與它的元素相關(guān)聯(lián)

		// 點擊添加標簽
        addTag(){
            ++this.tagNum;
            this.tags.push({"tag":"<input type='text' />", 'id':this.tagNum})
        },
	 <div 
	      class="addtag"
	      v-for="(i,index) in tags"
	      :key="i.id"
	  >
	      <div v-html="i.tag" class="tags">{{i.tag}}
	      </div>
	      <span @click='deleteTag(index)' class='fa fa-close'></span>
	  </div>
	  <span v-show='tags.length > 4 ? false : true' @click="addTag" class="fa fa-plus-square-o">添加標簽</span>

這樣我的問題就解決了,今天遇到的這個問題認為有必要記錄一下。

vue中splice()方法的使用

splice(index,len,item)是vue中數(shù)組變異的方法之一,可以用來刪除,更新,和增加數(shù)組內(nèi)容

參數(shù)

  • index: 數(shù)組下標
  • len: 為1或0
  • item: 更新或增加的內(nèi)容

使用方法

1,刪除,當參數(shù)形式為splice(index,1)時表示刪除下標為index的內(nèi)容

2,更新,當參數(shù)形式為splice(index,1,item)時表示用新的值item更新替換掉下標為index的值

3,增加,當參數(shù)形式為splice(index,0,item)時表示在下標為index的位置增加一項值為item

案例 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
		<title></title>
	</head>
	<body>
		<div id="demo">
			<ul>
				<li v-for="(m,index) in person" :key="index">
					<span>{{index}}--</span><span>{{m.name}}--</span><span>{{m.age}}---</span>
					<button @click="deletep(index)">刪除---</button>
					<button @click="updatep(index,{name:'shanghai',age:304})">更新---</button>
					<button @click="addp(index,{name:'shanghai',age:132})">增加</button>
				</li>
			</ul>
		</div>
	</body>
	<script type="text/javascript">
		var vm = new Vue({
			el: "#demo",
			data: {
				person: [{	name: "zhangsan",age: "112"},
					{	name: "zhangsan",age: "112"},
					{	name: "zhangsan",age: "112"},
					{	name: "zhangsan",age: "112"}]
			},
			methods:{
				deletep(index){
					this.person.splice(index,1);
				},
				updatep(index,newp){
					this.person.splice(index,1,newp)
				},
				addp(index,newp){
					this.person.splice(index,0,newp)
				}
			}
		})
	</script>
</html>

運行效果如上,當點擊刪除下標為0的項時得到的效果如下

當點擊更新按鈕時得到的效果如下

當點擊增加按鈕時得到的效果如下

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vuex的實戰(zhàn)使用詳解

    Vuex的實戰(zhàn)使用詳解

    這篇文章主要介紹了Vuex的實戰(zhàn)使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Vue的Scroll滾動事件觸發(fā)方式

    Vue的Scroll滾動事件觸發(fā)方式

    這篇文章主要介紹了Vue的Scroll滾動事件觸發(fā)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue?$event作為參數(shù)傳遞使用demo

    Vue?$event作為參數(shù)傳遞使用demo

    這篇文章主要介紹了Vue?$event作為參數(shù)傳遞使用demo詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 詳解VueRouter 路由

    詳解VueRouter 路由

    本文詳細介紹了VueRouter 路由的概念、規(guī)則、基礎(chǔ)等相關(guān)內(nèi)容,文中運用大量的圖片進行講解,感興趣的小伙伴可以看一看這篇文章
    2021-08-08
  • vue3實現(xiàn)小程序手機號一鍵登錄功能

    vue3實現(xiàn)小程序手機號一鍵登錄功能

    這篇文章主要為大家詳細介紹了如何使用vue3實現(xiàn)小程序手機號一鍵登錄功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-12-12
  • Vue3?TypeScript?實現(xiàn)useRequest詳情

    Vue3?TypeScript?實現(xiàn)useRequest詳情

    本文介紹了Vue3?TypeScript實現(xiàn)useRequest詳情,useRequest可能是目前社區(qū)中最強大,最接地氣的請求類?Hooks了??梢愿采w99%的網(wǎng)絡(luò)請求場景,無論是讀還是寫,無論是普通請求還是分頁請求,無論是緩存還是防抖節(jié)流,通通都能支持,關(guān)于其介紹需要的小伙伴可以參考一下
    2022-05-05
  • Vue 打包體積優(yōu)化方案小結(jié)

    Vue 打包體積優(yōu)化方案小結(jié)

    這篇文章主要介紹了Vue 打包體積優(yōu)化方案小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Vue加入購物車判斷token添加登錄提示功能

    Vue加入購物車判斷token添加登錄提示功能

    加入購物車,是一個登錄后的用戶 才能進行的操作,所以需要進行鑒權(quán)判斷,判斷用戶token是否存在,這篇文章主要介紹了Vue加入購物車判斷token添加登錄提示,需要的朋友可以參考下
    2023-11-11
  • 關(guān)于vite.config.ts文件的配置方式

    關(guān)于vite.config.ts文件的配置方式

    這篇文章主要介紹了關(guān)于vite.config.ts文件的配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue devserver及其配置方法

    vue devserver及其配置方法

    這篇文章主要介紹了vue devserver及其配置方法,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12

最新評論

封丘县| 延寿县| 武强县| 杭锦旗| 台前县| 莱西市| 曲靖市| 内丘县| 通化市| 广丰县| 开远市| 伊吾县| 永昌县| 岗巴县| 中卫市| 郴州市| 赤水市| 长治市| 瓮安县| 册亨县| 建湖县| 左权县| 九寨沟县| 洛隆县| 通许县| 鄢陵县| 宜黄县| 台中市| 大冶市| 徐汇区| 珠海市| 杨浦区| 铜川市| 望都县| 区。| 独山县| 扶余县| 宜州市| 和平县| 陆河县| 桐柏县|