【发布时间】:2017-04-17 22:23:52
【问题描述】:
我正在尝试使用 Vuejs 创建一个“类似推特”的字符计数器;但是,我遇到了两个不同的问题。
- 错误:无法获取未定义或空引用的属性“长度”
- 即使我让它工作,是否有任何方法可以使用多个事件调用相同的函数,而无需将每个事件添加为对标签的单独调用。例如:v-on:keyup,blur,focus="limiter(this,140)"
HTML:
<div class="form-group" id="vue">
<label for="eligibility-address-detail">Address Notes:</label>
<textarea class="form-control" id="eligibility-address-detail" rows="3"
name="eligibility[address][detail]" v-model="eligibility.address.details"
v-on:keyup="limiter(this, 140)" required></textarea>
<span class="limiter"></span>
</div>
JavaScript:
var main = new Vue({
el: "#vue",
data: {
eligibility: {
address: {
details: ""
}
}
},
methods: {
limit: function(elem, limit){
var chars = elem.value.length;
if (chars > limit) {
elem.value = elem.value.substr(0, limit);
chars = limit;
}
$(elem).siblings('.limiter').html((limit - chars) + " / " + limit + "characters remaining");
}
}
});
【问题讨论】:
-
不久前我在 Vue 中回答了这个非常准确的问题。 codepen.io/Kradek/pen/VpNvxg?editors=1010stackoverflow.com/q/43217239/38065
-
您的组件似乎有问题。在您的 HTML 中,您有以下
v-model="eligibility.address.details",但您的 data 属性没有这些属性。
标签: javascript vue.js