博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
elementUI使用本地变量进行验证,监测不到本地变量的变化 的问题
阅读量:5872 次
发布时间:2019-06-19

本文共 820 字,大约阅读时间需要 2 分钟。

对于饿了么组件自定义验证规则,组件库文档已经非常详细了:

 我这里将验证中固定的值提取出来使用变量进行保存,方便后面维护。

像下面这种写法,如果maxUrlCount保持不变,是没有问题的

 

但是,如果我页面或者代码里更改了maxUrlCount,此时验证中获取到的值还是初始定义的值,并不会监测到改变后的值。

解决方案: 把验证函数也提取出来,如下面这样:

 

 

------------------------------------------------------------------------------------ 原因解析 ---------------------------------------------------------------------------------------------------------------

这里主要是因为this指针的原因

1. 如果这样写

此时的this指向调用validator函数的对象,element这里会用一个验证相关的对象:所以打印出来是undefined

2. 如果是使用的箭头函数

或者 

此时箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例,而是指向了当前组件定义的类的实例;因为该类继承了Vue,所以初始化时会复制一份要读取的变量(this.maxUrlCount);但是this.maxUrlCount的改变的是Vue实例上的该属性,并没有改变当前类的实例属性;所以导致监测不到变量变化。

我这里使用的是ts的class语法,具体实现原理参见:https://zhuanlan.zhihu.com/p/48371638

3. 最后,也就是正确的写法:

 此时this指向 Vue 实例,能够正确监听到变量变化

转载于:https://www.cnblogs.com/XHappyness/p/10345706.html

你可能感兴趣的文章
zhe800采集
查看>>
架构之重构的12条军规
查看>>
A Filter of Java URL Encoding: GetQueryStringEn...
查看>>
进程树--用Enki学Linux系列(18)
查看>>
Magedu2_3 linux文件目录
查看>>
【Android】Listview返回顶部,快速返回顶部的功能实现,详解代码。
查看>>
shell数组
查看>>
关于div的定位属性问题
查看>>
phpstorm增加swoole自动提示
查看>>
[李景山php]每天TP5-20170114|thinkphp5-Model.php-7
查看>>
CSDN博客
查看>>
从QQ空间热度分析看社区营销
查看>>
CAS 4.1.x 单点登出(退出登录)的原理解析
查看>>
实现简单购物车功能
查看>>
python 在不同层级目录import 模块的方法
查看>>
开源中国 4 周年, 三个平台客户端全面开源
查看>>
java.util.concurrent 学习(一)
查看>>
DecimalFormat的用法
查看>>
SCONS如何集成工具
查看>>
Mind_Manager_2
查看>>