最近做項目時乍赫,遇到一個問題瓣蛀。
關(guān)于element 多行輸入框高度問題,在編輯的時候雷厂,高度很正常惋增,自適應(yīng),寫幾行改鲫,高度就多高诈皿。但是編輯完成保存后林束,再次打開高度就多了很多,多了好幾行空白稽亏『埃看源碼知道高度是計算得出的,需求又要求高度自適應(yīng)截歉,樣式肯定是不行了胖腾,想別的辦法,然后得出了兩個方案怎披。如下:
方法一:
在獲取到數(shù)據(jù)后胸嘁,對數(shù)據(jù)進行在處理,使得輸入框的高度重新計算凉逛。
setTimeout(() => {
? this.lists.forEach(list => {
? ? if (list.hasOwnProperty('children')) {
? ? ? var o_name = list.name;
? ? ? ? list.name = o_name + ' ';
? ? ? ? ? list.children.forEach(kr => {
? ? ? ? ? ? if (kr.hasOwnProperty('children')) {
? ? ? ? ? ? ? var kr_name = kr.name;
? ? ? ? ? ? ? ? ? kr.name = kr_name + ' ';
? ? ? ? ? ? ? ? ? kr.children.forEach(e => {
? ? ? ? ? ? ? ? ? ? var e_name = e.name;
? ? ? ? ? ? ? ? ? ? ? ? e.name = e_name + ' ';
? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? }
? ? ? ? ? })
? ? ? }
? ? })
? }, 100);
方法二:
改變輸入框的類型,默認是單行輸入框群井,再次編輯的時候改變輸入框類型為多行輸入框状飞,也是為了重新計算高度
<el-input
? :type="input_type"
? :placeholder="'請輸入(最多不超過500字)'"
? v-model="scope.row.name"
? class="ipt-hover edit_name"
? :ref="!scope.row.id?'kr_input':'editInput2'"
? maxlength="500"
? @blur="save($event,scope.row)"
? @focus="()=>rowClick(index,scope.$index)"
? autosize
? clearable>
</el-input>
data里先定義input_type:'text'
在獲取數(shù)據(jù)的時候改變input_type為textarea 即可
總結(jié):其實兩種方案都是為了讓輸入框能重新計算高度,只不過第二種更簡單书斜,推薦N鼙病(僅供參考)