当我使用自定义指令更改组件的值时,没有效果:
Vue.directive('maxchars', {
bind(el, binding, vnode) {
let maxChars = binding.value;
let handler = function(e) {
if (e.target.value.length > maxChars) {
e.target.value = e.target.value.substr(0, maxChars)
}
}
el.addEventListener('input', handler);
}
});
let app = new Vue({
el: '#app',
data() {
return {
content: '',
totalCount: 140
}
}
})<script src="https://unpkg.com/vue@2.5.16/dist/vue.js"></script>
<div id='app'>
<div>
<div class='content'>
<textarea v-model='content' v-maxchars='140'>tell me something</textarea>
</div>
</div>
</div>
当我使用v-bind:input指令来改变值的时候是可以的!
发布于 2019-11-13 14:33:06
只需使用 event 函数创建一个输入事件即可。
var event =新事件(“input”,{:true });
然后修改该值,然后分派事件,它将更新v-model值
el.dispatchEvent(事件);
Vue.directive('maxchars', {
update(el, binding, vnode) {
var event = new Event("input", { bubbles: true });
let maxChars = binding.value;
if (el.value.length > maxChars) {
el.value = e.value.substr(0, maxChars);
el.dispatchEvent(event);
}
}
});希望对您有所帮助。
https://stackoverflow.com/questions/49598541
复制相似问题