当前位置:   article > 正文

element ui Checkbox 多选框组件 lable不支持Object类型的值的问题_elementui 多选框选中没有对钩

elementui 多选框选中没有对钩

浅浅记录一下,遇到这个问题的心理路程吧,首先我遇到的问题是多选框的值回显不打对勾,(例如:你新增的时候多选,然后点击编辑的时候选过的值没有被勾选,其实是被勾选上了,但是没有显示对勾,因为我点击已经选择过值就会取消勾选,说明这个值其实是回显了,但是不显示对勾),然后我就去查element ui,发现他的多选框的label只支持string / number / boolean,不支持object的形式,但是我的业务场景需要label的类型为object,于是尝试了各种方法之后,找到了一个最为合适的解决方案

 1.写一个新组件

  1. <script>
  2. // new-el-checkbox.vue 支持OBJECT 类型
  3. import { defineComponent } from '@vue/composition-api'
  4. import { Checkbox } from 'element-ui'
  5. import _isEqual from 'lodash/isEqual'
  6. // Now support array of object by adding _isEqual to compare the values
  7. // Specify the value of checkbox with 'label' prop, not 'value' prop
  8. export default defineComponent({
  9. extends: Checkbox,
  10. computed: {
  11. // eslint-disable-next-line vue/return-in-computed-property
  12. isChecked() {
  13. if ({}.toString.call(this.model) === '[object Boolean]') {
  14. return this.model
  15. } else if (Array.isArray(this.model)) {
  16. return this.model.find((item) => _isEqual(item, this.label))
  17. } else if (this.model !== null && this.model !== undefined) {
  18. return this.model === this.trueLabel
  19. }
  20. },
  21. },
  22. methods: {
  23. addToStore() {
  24. if (Array.isArray(this.model)) {
  25. const isExisted = this.model.find((item) => _isEqual(item, this.label))
  26. if (!isExisted) this.model.push(this.label)
  27. } else {
  28. this.model = this.trueLabel || true
  29. }
  30. },
  31. },
  32. })
  33. </script>

2.在你的多选框页面引用上面的组件,然后将下面的方法进行改写你的多选框组件

  1. <el-checkbox-group v-model="value" >
  2. <new-el-checkbox v-for="item in Options" :label="item" :key="item.id">{{ item.label }}
  3. </new-el-checkbox>
  4. </el-checkbox-group>
  5. <script>
  6. import newElCheckbox "@/components/newCheckbox.vue";
  7. export default{
  8. components:{
  9. newElCheckboxfrom
  10. },
  11. }
  12. </script>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/384495
推荐阅读
相关标签
  

闽ICP备14008679号