<el-input type="textarea" :autosize="{minRows:2}" v-model="amodel"></el-input>
如上邊代碼,element-ui 提供自動改變大小的 textarea 功能(這個功能詳見)。javascript
可是個人一個項目裏,當 amodel 初始就有值的時候,他並不能調整大小,而是會出現滾動條,只有當修改內容的時候纔會從新調整到合適大小。vue
接下來我只能用更笨的辦法逐步排查是什麼問題java
display:hidden
,我就想到是否是隱藏的元素 elementUI 就不 autosize 了。而後我立刻在原項目中測試,將其中一個出現問題的 tab 設置爲默認的 tab,果真沒問題的,問題的緣由終於肯定了。原項目中有好幾個 tab 須要 autosize,剛纔設置默認 tab 這種方法確定是不行的,那麼換一種控制顯示隱藏的方法就行了,由於我換了v-show
,雖然 tab 這種須要頻繁切換的用v-show
更合適,可是爲了解決這個問題也只能這麼作了。通常來講, v-if 有更高的切換開銷,而 v-show 有更高的初始渲染開銷。所以,若是須要很是頻繁地切換,則使用 v-show 較好;若是在運行時條件不太可能改變,則使用 v-if 較好。element-ui
ps:只是記錄本身的思考過程,因此行文比較凌亂,語法也可能有問題,見諒。測試
PPS:在 GitHub 提了個 issue,獲得的解決方案是:ui
- 爲 input type=textarea 增長ref。好比ref='userInfo'
- 在v-show的值發生變化時,調用this.$refs.userInfo.resizeTextarea(),調用方法以下:
this.$nextTick(function () { vmSelf.$refs.userInfo.resizeTextarea(); });