<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(); });