关于element ui 中级联选择器异常的记录

 在编写项目时,前端需要用到element ui 中的级联选择器(el-cascader),通过它实现项目商品分类的选择,具体效果如下图所示:

这里将数据保存之后,再点击修改时,信息回显到弹框中,所有信息已经回显到指定位置上,除级联选择器之外,它的信息没有显示出来。通过检查后端返回给前端的数据(它是一个数组),发现数据是完整的带回来的;

但是确在这里没有展现出来,后端返回的级联选择器需要的数据如下:

仔细观察会发现,数组中,除了路径信息外,还有一个 __ob__: Observer,它是vue对整个数据设置的监视器,能够实现视图与数据的响应式更新,一般不可枚举。因为vue中是支持双向绑定的,当数据发生变化,可以很好的将变化后的结果展示出来。

网上百度发现,那么可以使用JSON.stringify 将数组转换成字符串,然后在通过JSON.parse的方式将JSON字符串转换成Object对象。代码如下:JSON.parse(JSON.stringfy(array)),后端没有错误提示信息,但是级联选择器上依然没有信息;

因为后端中返回的数组中的数据是Long类型,通过后端将返回的数组中的数据转换成String类型返回给前端,可以解决。这时,后端返回的级联选择器中的内容如下:

### 实现 Vue 2 中级选择器的动态赋值 在 Vue 2 中实现选择器(Cascader)的动态赋值主要依赖于 `model` 绑定以及事件处理机制。为了确保父子组件间的数据同步,可以采用 `.sync` 修饰符或自定义事件的方式。 对于子组件而言,使用 `props` 接收来自父组件的数据,并利用 `$emit` 方法发送更新后的值给父组件[^1]: ```html <template> <el-cascader v-model="localValue" /> </template> <script> export default { props: ['value'], data() { return { localValue: this.value, }; }, watch: { value(newValue) { this.localValue = newValue; }, localValue(newValue) { this.$emit('input', newValue); } } }; </script> ``` 上述代码展示了如何监听 `value` 的变化并相应地调整本地状态;同时也监视着 `localValue` 变化以便及时通知父组件最新选中的选项。 如果希望更简洁地管理这种双向绑定关系,则可以在模板中直接应用 `.sync` 语法糖[^3]: ```html <!-- Parent Component --> <child-component :foo.sync="selectedOptions"></child-component> ``` 这相当于写成如下形式: ```html <child-component :foo="selectedOptions" @update:foo="(newValue) => selectedOptions = newValue"></child-component> ``` 当涉及到具体业务逻辑比如初始化默认值或者根据某些条件改变已有的选择时,可以通过调用实例方法来完成这些操作。例如设置初始值为某个特定路径下的节点集合: ```javascript this.$refs.cascader.dropDownVisible = true; this.$nextTick(() => { this.$refs.cascader.handlePick([pathArray]); }); ``` 这里假设已经获取到了目标路径对应的数组表示形式 `[pathArray]` 并且该组件拥有名为 `cascader` 的引用(ref),这样就可以精确控制何时何地触发选择动作了。 #### 注意事项 - 当前示例基于 Element UI 库中的 Cascader 组件编写。 - 如果使用的第三方库有所同,请参照其官方文档进行适当修改。 - 动态赋值过程中需要注意异步加载数据的情况,可能需要额外考虑延迟渲染等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VogtZhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值