今在開發乙個迴圈增加select 的時候,出現了v-model繫結到相同物件,當乙個select改變其他也會隨之改變的問題頁面操作,1、選擇其中乙個select
2、當選擇後發現上下兩個select 也隨之選中為了同樣的值
think think why … ,修改某乙個select 其他兩個也會同著更改!
來過過**找找問題—//
html是這樣的
label=
"推送訊息型別"
>
for=
"(hitem,index) in pushsecondtypeofhour"
:key=
"index"
class
="items-second-type"
>
"hitem.hmodelval"
>
v-for=
"item in hitem.houselist"
:key=
"item.value+'-h'"
:label=
"item.label"
:value=
"item.value"
/>
<
/el-select>
"hitem.tmodelval"
>
v-for=
"item in hitem.temperlist"
:key=
"item.value+'-t'"
:label=
"item.label"
:value=
"item.value"
/>
<
/el-select>
"hitem.maxmodelval"
>
v-for=
"item in hitem.maxlist"
:key=
"item.value+'-m'"
:label=
"item.label"
:value=
"item.value"
/>
<
/el-select>
"pushsecondtypeofhour.length>1&&index!==pushsecondtypeofhour.length-1"
class
="el-icon-minus rec-second-msg" @click=
"redcsecondbtn"
/>
"index===pushsecondtypeofhour.length-1"
class
="el-icon-plus add-second-msg" @click=
"addsecondtype"
/>
"index===pushsecondtypeofhour.length-1"
class
="add-second-msg-txt"
>新增型別1/3
<
/span>
<
/div>
<
/el-form-item>js是這樣的
export
default,,
,,],
temperlist:[,
,], maxlist:[,
,,],
hmodelval:1,
tmodelval:1,
maxmodelval:1}
, pushsecondtypeofhour:
}},created()
, methods:
,// 刪除
redcsecondbtn()
}}後來才發現原來是這裡addsecondtype()
方法直接用pushsecondtypeofhour
push 了這個this.pushsecondtypeofhouroption
物件
這就意味著,陣列裡所有元素的記憶體位址都指向了同乙個pushsecondtypeofhouroption
物件, 而後來的v-model
繫結自然也就在同乙個物件上了,當改變時幾個select 所選中的值都相同自然就不奇怪了
最後修改**
1、修改pushsecondtypeofhouroption 定義
將data中的pushsecondtypeofhouroption 移動到 最外層,定義為乙個常量
const
type_options=,
,,,]
, temperlist:[,
,], maxlist:[,
,,],
hmodelval:1,
tmodelval:1,
maxmodelval:1}
export
default
, methods:
,type_options
)this
.pushsecondtypeofhour.
push
(typeoptions)
console.
log(
this
.pushsecondtypeofhour)
}}在addsecondtype()
使用object.assign()
進行物件拷貝,再將其新增到pushsecondtypeofhour
陣列中,確保陣列元素不是同乙個物件
ok 問題解決,沒想還踩了個基礎知識的坑
js中的基本型別和引用型別
基本型別:undefined、null、string、number、boolean、symbo(es6)
普通基本型別:undefined、null、symbol(es6)
特殊基本包裝型別:string、number、boolean
引用型別:object、array、regexp、date、function基本型別的變數是存放在棧記憶體(stack)裡的
基本資料型別的值是按值訪問的
基本型別的值是不可變的
基本型別的比較是它們的值的比較
引用型別的值是儲存在堆記憶體(heap)中的物件(object)
引用型別的值是按引用訪問的
引用型別的值是可變的
引用型別的比較是引用(物件本身)的比較
基本型別的賦值其實就是將變數的值複製乙份給另乙個變數,當乙個變數值做操作時並不會影響到其他變數
引用型別的賦值其實是將物件儲存在棧區位址的指標(記憶體位址)賦值給另乙個變數,賦值後等同於這兩個變數都指向了同一塊記憶體位址,因此當乙個變數賦值給另乙個時,兩個變數指向的是同乙個物件(及記憶體位址),任何的操作都會相互影響。
最近踩的乙個小坑
最近需要實現乙個業務,大致的內容是為了提高效率,把資料庫中的資訊定時同步到記憶體中,然後使用記憶體查詢,提高效率。然後在實現過程中遇到了乙個問題,需要同步的資訊約9萬條,但是這9w條資料對應了133w個,大概乙個id十幾張吧。儲存這些的時候,遇到了小問題。專案原本使用的結構是 list vin1,1...
踩了乙個MyBatis的大坑
最近在專案中做了乙個上傳檔案 類雲盤 功能。返回檔案列表的時候需要left join 使用者表,取得上傳者的名字。專案用的是mybatis,寫好之後發現,對於每乙個上傳者,只取到了他上傳的最後乙個檔案,看起來好像是變成了inner join。但是我在mysql workbench裡面用同樣的語句得到...
使用PageHelper踩的乙個小坑
之前使用pagehelper都沒有問題,今天使用時發現查詢出來的資料沒有分頁。一開始的 時這樣的 public pageinfonotsaleorder integer pageno,integer clientid 問題 pagehelper.startpage pageno,3 應該放在你要分頁...