首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过自定义指令修改v-model属性的值?

如何通过自定义指令修改v-model属性的值?
EN

Stack Overflow用户
提问于 2018-04-01 21:24:22
回答 1查看 11.4K关注 0票数 6

当我使用自定义指令更改组件的值时,没有效果:

代码语言:javascript
复制
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
    }
  }
})
代码语言:javascript
复制
<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指令来改变值的时候是可以的!

EN

回答 1

Stack Overflow用户

发布于 2019-11-13 14:33:06

只需使用 event 函数创建一个输入事件即可。

var event =新事件(“input”,{:true });

然后修改该值,然后分派事件,它将更新v-model值

el.dispatchEvent(事件);

代码语言:javascript
复制
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);
      }
  }
});

希望对您有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49598541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档