【发布时间】:2018-06-16 04:47:35
【问题描述】:
我正在尝试使用 Vuejs 创建一个简单的应用程序,它将检查标题标签 (px) 的长度。
在内部我设置了标题的默认值并运行检查默认标题标签的长度,但它返回 0。当我更改输入值时,它工作正常。
这是我的代码。链接:https://codepen.io/mrtienhp97/pen/LeOzGa
HTML:
<div id="app">
<input v-model="title" @input="titleCheck()">
<div id="title-preview">{{title}}</div>
<div class="message">{{message}}</div>
</div>
CSS:
#title-preview {
display: inline-block;
}
JS:
new Vue({
el: '#app',
data: {
title: '',
message: ''
},
mounted: function() {
this.$nextTick(function () {
this.title = "Default Title";
var title_width = document.getElementById("title-preview").offsetWidth;
this.message = title_width + 'px';
});
},
methods: {
titleCheck: function() {
var title_width = document.getElementById("title-preview").offsetWidth;
this.message = title_width + 'px';
}
}
})
谁能帮我改正?
【问题讨论】:
-
原因是整个mounted()都是在页面渲染之前发生的。你应该以某种方式延迟它。不过,我仍在努力寻找一个好的答案。
标签: javascript vue.js