環境:
網頁中點擊“新增”按鈕會顯示“新增計劃”頁面,該頁面有兩個下拉列表框:
第一個:選擇計劃天數(對應變量:dayNumber)。
第二個:根據dayNumber變量提供天數的下拉選擇:第1天、第2天(對應變量planPeriod[index].startDay)。
問題:
如果第一次選擇了“計劃天數”,點擊“返回”按鈕(對應函數reload)返回後,再次選擇新增,則不能正確顯示下拉選項,都顯示“無匹配選項”。
如果第一次不選擇“計劃天數”,點擊“返回”按鈕直接返回,則一切正常。
代碼:
html如下
<i-form ref="detailPlan" :model="planPeriod" :label-width="80" v-for="(item,index) in planPeriod" >
<Form-item label="時間" prop="startDay" style="align-items: flex-start;" label-width="80">
<i-select v-model="item.startDay" filterable>
<i-option v-for="index of fitbeeTrainingPlan.dayNumber" :value="index" :key="index">第{{index}}天
</i-option>
</i-select>
</Form-item>
</i-form>
問題定位:
直接原因:
如果選擇了“計劃天數”,則“返回”後,fitbeeTrainingPlan.dayNumber="",planPeriod[0].startDay=""。
如果不選擇計劃天數,直接返回,則fitbeeTrainingPlan.dayNumber爲 undifined,planPeriod[0].startDay=1,這是在reload函數中的正常初始化。
未能定位出planPeriod[0].startDay和fitbeeTrainingPlan.dayNumber是何處被修改爲""的,reload函數運行結束時兩變量仍然正常,但是在界面上顯示時就不對了。
根本原因:
未定位。
規避方法:
在“新增”按鈕回調函數add中增加對planPeriod[0]的初始化。確保在新增頁面startDay,endDay有正確的初始值。如此則下拉選項可正確顯示。
vm.planPeriod = [{
id:0,
startDay: 1,
endDay:1,
actions:[{}]
}];