vue+iview项目开发实践问题总结(一)

  • 1.实际使用中需要监听对象变化或者对象数组中某一属性是否发生变化

data(){
    return {
        associationNewForm:{...}
    }
},
watch:{
      // ['associationNewForm.ruleName'](){
      //监听某一属性发生变化
      //   this.$emit('datachange',this.associationNewForm);
      // }
      associationNewForm:{
        handler:function(val, oldVal){
          this.$emit('datachange',val);//通知父组件数据变化
        },
        deep:true
      }
    },
configStepData:{
//监听对象数组属性变化,需要深度监听
handler: function (newVal) {
    let dataObj={
      flag:'zgjconfigStepData',
      data:this.configStepData
    };
    this.$emit('getSubAlarmConditionData',dataObj);
},
deep: true    //深度监听
}
复制代码
  • 2.iview中表格渲染行的事件阻止冒泡方式
on: {
click: e => {
  e.stopPropagation();
  this.removeRow(params);
}}
复制代码
  • 3.iview中modal点击确定的操作时,但是modal中有表单校验,这个时候就需要通过loading动态控制
ok () {
    this.$Message.info('异步验证数据');
    setTimeout(() => {
        this.loading = false;
        this.$nextTick(() => {
            this.loading = true;
        });
    }, 2000);
}
复制代码

iview的github上有对应的issue有对应问题,相关issue

  • 4.iview中时间选择组件如果需要禁用的话,单独添加disabled不起作用,需要添加readonly

  • 5.iview中table列开启了ellipsis鼠标滑过显示tooltip,网上找到一种方法,显示内容

{
    title: '属性值',
    key: 'attrValue',
    render: (h, params) => {
        return h('div', [
          h('span', {
              style: {
                  display: 'inline-block',
                  width: '100%',
                  overflow: 'hidden',
                  textOverflow: 'ellipsis',
                  whiteSpace: 'nowrap'
              },
              domProps: {
                  title: params.row.attrValue
              }
          }, params.row.attrValue)
      ]);

    }
  }
复制代码

在iview的github上有对应issue,但是没有得到解决,上面好多人都在问,稍微吐槽下,感觉处理问题不如element-ui框架团队处理的快,个人更喜好element。

自己鼓捣出了一种方式

{
            title: '属性值',
            key: 'attrValue',
            ellipsis:true,
            render: (h, params) => {
                return h('div', [
                  // h('span', {
                  //     style: {
                  //         display: 'inline-block',
                  //         width: '100%',
                  //         overflow: 'hidden',
                  //         textOverflow: 'ellipsis',
                  //         whiteSpace: 'nowrap'
                  //     },
                  //     domProps: {
                  //         title: params.row.attrValue
                  //     }
                  // }, params.row.attrValue)
                  h(
                    'Tooltip',
                  {
                    props: { content: params.row.attrValue, placement: 'top-start', transfer: true },
                    style:{
                      width:'100%'
                    }
                  },
                  [
                    h('span', {
                      style: {
                          display: 'inline-block',
                          width: '100%',
                          overflow: 'hidden',
                          textOverflow: 'ellipsis',
                          whiteSpace: 'nowrap'
                      },
                      on: {
                        click: () => {
                          this.toUpdate(params.index);
                        }
                      }
                    },params.row.attrValue)
                  ]
                )
              ]);

            }
          }
复制代码

不过需要配合样式才能正常实现

.ivu-tooltip-inner{
    white-space:normal;
  }
  .ivu-tooltip-rel{
    display: block;
  }
复制代码

初次使用iview,还在不断摸索中,后续如果有问题的话,会持续更新。

推广下个人博客,多多支持,欢迎各路大神提出宝贵意见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值