Js是一种弱语言,变量可以不用定义而在运行中进行增加。这种语言风格在带来简便的同时也带来运维排错的灾难,谁都能写上一手代码,却给运维和排错带来高额开销。
前段时间,有业务需要用到el-select嵌套下拉el-tree实现选择,业务很简单,只要拉出el-tree,选择节点回显到el-select中即可。思路为点击el-tree时,触发node-click方法,将当前点击的节点的名称赋值给el-select的model。可死活el-select回落不上,也没有报错信息。
各种测试后发现原来el-select的model关联的对象的属性事先没有定义,虽然node-click时往对象中添加了属性,但model直接关联这个属性,却是取不到值的。如下图,当时只定义了form_newAdd,没有定义urlNodeName。
![](https://img.haomeiwen.com/i14297483/d92f27c2ee24da11.png)
![](https://img.haomeiwen.com/i14297483/dc1d39be19b14e4c.png)
后来发现在取消时,有写法
this.form_newAdd = {
};
结果又造成很奇怪的时而能绑定,时而不能绑定,修改为可解决。
this.form_newAdd = {
urlNodeName:'',
urlNodeId:''
};
所以在写前端代码时也要养成良好的习惯,先定义在使用,不要利用那些莫名其妙的特性,给自己找事情。
在做数据初始化时一定要和data定义里的数据初始化保持一致,不能随心所欲。
网友评论