代码托管:Github和Gitee,国内用户使用Gitee下载速度较快。
系统环境:Win10/Ubuntu,JDK8,maven,node,docker。
依赖服务:Docker,MySQL8,Redis5
一,问题
Jeecg技术社区有用户提交一个issue,JDictSelectTag组件,trigger-change="true"选中无效。
![9bff8c640add58ac9c81d112e60572cc.png](https://i-blog.csdnimg.cn/blog_migrate/4df47f1234b57b92a266149c94d3f635.jpeg)
根据贴出来的问题代码,使用了v-model关联参数,同时设置了trigger-change,这样的配置,查看JDictSelectTag.vue代码,执行逻辑如下:
![1d437616766454d049a79fdc0399ef50.png](https://i-blog.csdnimg.cn/blog_migrate/8aac08a5d3eda26a4a7d212319f5c886.jpeg)
也就是说,没有执行input()事件处理函数,执行是change(),所以model绑定的值没有变化。
亲手试了代码,注意trigger-change和v-model/v-decorator搭配使用方法。
v-model时,不要设置trigger-change。
v-decorator时,需要设置trigger-change,才能赋值成功。
针对问题,代码中拿掉trigger-change就行了。
二,知识延伸
JDictSelectTag详细用法,参照Jeecg社区文档:
1,v-model用法示例
2,v-decorator用法
注意加参数triggerChange="true"才能赋值不成功。
![7200867d7b69709cdf0261c87fa624b0.png](https://i-blog.csdnimg.cn/blog_migrate/ce3d6eeaba399c8d8953ccbc9d81df2b.jpeg)
三,常见问题
1,使用v-model时,提示错误
v-model directives require the attribute value which is valid as LHS.
错误原因:v-model 的值只能是一个变量,适合用来定义一些组件返回的接收参数,不能应用filter。
解决方法:v-model赋值字段值。如果需要验证参数值,使用v-decorator操作,比如不为空,唯一值,只能是数字等等。
2,LHS和RHS是什么意思?
“L”和“R”分别代表左侧和右侧,含义是“赋值操作的左侧或右侧”。当变量出现在复制操作的左边时,就是LHS查询;出现在右边时,就是进行RHS查询。
举例1:
console.log(a)
a就是进行RHS查询,因为并没有对a进行赋值操作,而是直接引用了a,需要查找并拿到a的值才能传递给console.log。
举例2:
a=2
赋值操作对 a 的引用则是 LHS 引用。
举例3:
![dbef45f9ede804e00e711a7a4b5e7043.png](https://i-blog.csdnimg.cn/blog_migrate/0dcdb04eda2e3a5eff40ab3757b5f9ff.jpeg)
以上代码中有三处LHS:
c= ...
a=2,函数形参赋值,隐式LHS查询
b=...
四处RHS:
foo(2)
= a;
return a;
return b;