Vue2自定义指令改变DOM值后未刷新data中绑定属性的值
标签(空格分隔): Vue
自定义指令用于过滤输入框,只允许输入数字:
Vue.directive('numberOnly', {
bind: function (el, binding) {
el.handler = function () {
el.value = el.value.replace(/[^\d]/g, '');
}
el.addEventListener('input', el.handler);
},
unbind: function (el) {
el.removeEventListener('input', el.handler);
}
});
在DOM中使用如下所示:
<input type="text" name="image-code" class="input" placeholder="图片验证码" autocomplete="off" v-model="imageCode" v-number-only />
此时可以实现在输入框中只能输入数字,输入其它字符不予显示。但是在提交表单的时候使用this.imageCode却发现,字符中有一个刚才试验的非数字字符,如图所示:

这该怎么办呢?通过阅读文档,我目前使用传递自定义指令value属性的方法来为data中的属性赋值。使用这个方法,可以不绑定v-mode="",当然绑定了也没什么区别:
Vue.directive('numberOnly', {
bind: function (el, binding) {
el.handler = function () {
el.value = el.value.replace(/[^\d]/g, '');
// 手动刷新data中绑定的属性
binding.value.set[binding.value.name] = el.value;
}
el.addEventListener('input', el.handler);
},
unbind: function (el) {
el.removeEventListener('input', el.handler);
}
});
此时在DOM中就需要传递两个属性:
<input type="text" name="image-code" class="input" placeholder="图片验证码" autocomplete="off" v-model="imageCode" v-number-only="{ set: this, name: 'imageCode' }" />
这样this.imageCode当中就不会出现非数字字符串了。
你可能想说,直接在set中指定this.imageCode,然后在自定义指令中binding.value.set = el.value;,不就可以了嘛。然而经过测试这样是起不到作用的。
这个方案并不优雅,如果有其它解决方案,还望不吝赐教。
Vue2自定义指令改变DOM值后未刷新data中绑定属性的值的更多相关文章
- 【spring boot logback】日志使用自定义的logback-spring.xml文件后,application.properties中关于日志的相关配置还会起作用么
本篇 将针对[日志使用自定义的logback-spring.xml文件后,application.properties中关于日志的相关配置还会起作用么]这一个主题进行探索. 这个测试项目是根据[spr ...
- ajax取到数据后如何拿到data.data中的属性值
今天遇到的ajax取到数据后如何拿到data.data中的属性值的问题 比如拿到了数据 我要取出data中的name 题外话:当然取名最好别取什么奇怪的xiaobi
- 关于提交表单时添加自定义值的方式:data中值可绑定function
表单提交时新增自定义值: $.ajaxForm(){ data:{aaa:"12"} } 但是这个是在初始化的时候就绑定进去的,所以值是固定的初始化时候的值,若想添加动态值,可以这 ...
- 学习旧岛小程序 (5) observer 函数中修改属性的值
不要在一个属性的 observer 函数中修改属性的值 不然会造成内存泄露 错误代码: properties: { /* 期刊号 */ index: { type: String, observer ...
- 微信小程序:给data中对象中的属性设置值与给data中的属性或对象或数组设置值的区别
一.给data中的属性或对象或数组设置值,属性名不需要加引号 this.setData({ material: param, // 这里material为对象 } this.setData({ d ...
- Vue自定义指令获取DOM元素
我们知道,Vue.js的核心是数据驱动,当数据有所变化时,DOM就会被更新,比如: <span v-text="msg"></span> export de ...
- angular中关于自定义指令——repeat渲染完成后执行动作
业务中有时需要在异步获取数据并用ng-repeat遍历渲染完页面后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己动手写.有经验的同学都应该知道,在ng-r ...
- vue2自定义指令-加载指令v-loading和占位图指令v-showimg
了解自定义指令的钩子函数 bind(){}:每当指令绑定到元素上的时候,就会立刻执行bind这个函数.只调用一次. 和css相关的操作,可以放在这个钩子函数中. inserted(){}:元素插入到D ...
- 在jsp中用一数组存储了数据库表中某一字段的值,然后在页面中输出其中的值。
List<String> list = new ArrayList<String>(); String sql = "select userName from us ...
随机推荐
- Odd number problem
描述 你一定玩过八数码游戏,它实际上是在一个3*3的网格中进行的,1个空格和1~8这8个数字恰好不重不漏地分布在这3*3的网格中.例如:5 2 81 3 _4 6 7在游戏过程中,可以把空格与其上.下 ...
- new Date("2018-01-01 11:11:11").valueOf() 在IE下会返回 NaN
原因是在ie下 new Date不能处理 小横线 这种时间格式,但是 替换成 斜线就可以正常获得毫秒数,像下面这样: new Date(('2018-01-01 11:11:11').replace( ...
- 启用和禁用TCPIP上的Netbios
'设置传输值1是启用,设置2为禁用 On Error Resume Next strComputer = "." Set objWMIService = GetObject(&qu ...
- PIE 支持项目介绍
目前PIE SDK已经支持了气象.海洋.农业.水利.测绘等多个行业应用. [气象应用-和WebGIS程序界面结合] [气象应用-积雪监测] [气象应用-洪涝监测] [气象应用-专题模板] [气象应用- ...
- oracle 基础知识(一)
Oracle 用户.权限.角色管理 01.概念 用户:对数据库的访问需要以适当的身份通过验证,这就是用户的作用:每个Oracle用户都有自己的用户名和密码,并且拥有他们所创建的任意表.视图和其他资源, ...
- 编程中经常看到上下文context,这个上下文指得是什么?
举个栗子:小美气呼呼对我说:“你去死吧”,我当时哭了. 场景1:小美刚转学到我们学校,我暗恋了她很久,有一天鼓足勇气,向她表白,小美气呼呼对我说:“你去死吧”,我当时就哭了.场景2我跟小美从小青梅竹马 ...
- tornado handler 方法复用的 3 个方法
tornado handler 调用 特性 在一次 tornado 请求中调用其他 tornado handler 中的方法, 比如 run 方法 引言 在后台开发中, 有时需要做一些功能的整合, 比 ...
- java开发中的设计模式
http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五 ...
- Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性)
Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性) 前言:由于前段时间忙于写接口,在接口中需要做很多的参数校验,本着简洁.高效的原则,便写了这个小工具供自己使用(内容 ...
- 分支结构case……end
语法: case when 条件1 then 结果1 when 条件2 then 结果2 ……….. else 其它结果 end 执行顺序: 条件1成立执行结果1 条件2成立执行结果2 如果所有的wh ...