• 在d2crudplus使用穿梭框遇到的问题总结


    做后台开发的时候,所使用的前端框架一直是d2admin,其中重要的是使用了d2-crud-plus。

    本周在使用其中的穿梭框(transfer)组件的时候,大费周章,官方给的示例实在太简单了(其实也怪自己学艺不精)。。。

    {
          title: '穿梭框',
          key: 'transfer',
          type: 'transfer',
          form: {
            component: { span: 24 }
          },
          valueBuilder (row, col) {
            if (row[col.key] === '') {
              row[col.key] = null
            }
            // console.log('tranfer:', row, row[col.key], col.key)
          }
    
        },
    

    在这个示例中,没看到如何传输数据,于是开始了漫长的折腾过程。。。

    1、开始以为可以走dict来获取数据,折腾来折腾去,发现根本不响应,遂放弃。

    2、然后根据transfer组件内部使用的是el-transfer,看到了对应的数据属性是data。通过在from:component中直接添加data数组,果然生效了。

    3、但我的目的是动态获取数据,不能用固定不变的data数组,然后就各种查资料怎么传递数据到from中。

    4、查了半天无果。。。

    5、机智如我,想到了通过qq搜索,果然找到了一个d2-crud-plus的群:871382478,群主是个好人,我问的问题都给详细回复了。

    1)首先群主告诉我可以通过暴露的接口传递数据给form,时机是在打开编辑框的时候

    doDialogOpened (context) {
          api.GetAgents().then(res => {
            this.$set(this.getEditFormTemplate('agents').component.props, 'data', res)
          })
    }
    

     通过这种方式,终于能成功的动态获取数据,并且传递到form中了!!伟大的第一步!

    2)但随之更为头疼的问题来了,当在穿梭框中第一次数据被选到右侧的时候,全部数据都消失不见了。后来发现只要最大化一次页面,数据又恢复了。。

    同时诡异的是,如果data数组是预置好的,则不会有这个问题。

    我首先怀疑的是页面刷新问题,分析change事件里的元素,然后尝试各种刷新方式。获取到数据时刷新,change事件时刷新,但均不生效。

    这一步搞的我快怀疑人生了。。。

    又是伟大的群主拯救了我,他告诉我component的属性要写在props内!!奇怪,我之前直接写在component下的属性也是生效的。

    {
            title: '选择代理商',
            key: 'agents',
            type: 'transfer',
            show: false,
            form: {
              title: '选择代理',
              component: {
                name: 'el-transfer',
                props: {
                  filterable: true,
                  titles: ['全部代理商', '已选择代理商']
                },
                on: {
                  change (value) {
                    // console.log('change: ', value)
                  }
                },
                span: 24
              }
            }
    },
    

    终于成功了!!这里整理下,希望对其他人有所帮助,也感谢下群主!

  • 相关阅读:
    Beta阶段代码规范与计划
    Alpha总结展望——前事不忘后事之师
    Alpha冲刺成果测试
    Alpha冲刺总结
    码到成功——Beta冲刺随笔 day 5
    码到成功——Beta冲刺随笔 day 4
    码到成功——Beta冲刺随笔 day 3
    码到成功——Beta冲刺随笔 day 2
    码到成功——Beta冲刺随笔 day 1
    项目Beta冲刺(团队)——凡事预则立
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/15990745.html
Copyright © 2020-2023  润新知