element-ui 踩坑记

element-ui小技巧
百度是个好东西,学会自己找解决方法并加以实践保存。
1、当template和formatter不能同时出现时,该怎么办?(仅作为记录使用)

<el-table-column prop="name" label="名称" width="265" show-overflow-tooltip sortable>
    <template slot-scope="scope">
        <span v-html="bs(scope.row)"></span>
    </template>
</el-table-column>

bs(row){
    let a = [];
    a = this.unBrand.filter(item=>item.id == row.i_brand_id);
    if(a.length>0){
        return row.name + "<span class='orderremark2'>(未启用)<span>";
    } else {
        return row.name;
    }
},

参考资料:
https://blog.csdn.net/weixin_…

2、el-select下拉框文本显示内容过长,该怎么办?(仅作为记录使用)
效果图如下:

《element-ui 踩坑记》

<el-select v-model="searchData.abnormal_reason" 
    @visible-change="(((val)=>watchEp(val,'expReason','abnormal_reason')))" 
    collapse-tags multiple placeholder="请选择(可多选)"  class="long-select" style="width:234px;" clearable >
    <el-option v-for="(item,index) in expReason" :label="item" :value="item" :key="index" class="long-select" >
    </el-option>
</el-select>
    
.long-select .el-select-dropdown__item {
    font-size: 14px;
    padding: 0 20px;
    position: relative;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    color: #606266;
    height: 34px;
    line-height: 34px;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    cursor: pointer;
    max-width: 234px;
}
.long-select .el-tag--mini {
    height: 20px;
    padding: 0 5px;
    line-height: 19px;
    display: block;
    max-width: 92px;
    overflow: hidden;
    text-overflow:ellipsis;
    white-space: nowrap;
    float: left;
}

操作:

在el-select的两个地方,渲染上加上一个class,然后在样式的最大权限下加上面的css样式重写,即可。

参考文档:(效果与参考文档效果略有不同)

https://www.cnblogs.com/fangnianqin/p/10676698.html

3、在vue里不能检测对象属性的添加或删除问题–这么说可能不是很理解,直接举个我遇到的例子好了;

页面渲染:
<div  class="clearfix" v-for="(ival,i) in ilist[0]">
    <span class="step" style="height:30px;">步骤{{i+1}}</span>
</div>
代码:
data(){
    return {
        ilist: [],
    }
},
created(){
    this.ilist[0] = [{
        id: 'ss';
    }]
},
addDomain(){ //点击事件去增加这个ilist的长度
    this.ilist[0].push({
        id: 'aa'
    });
}

《element-ui 踩坑记》

以上你打印出来会发现在,这个ilist的属性没有Observer这个响应属性;所以虽然数组长度有增加,但是实际上页面渲染还是只有一个。
解决办法:
addDomain(){ //点击事件去增加这个ilist的长度
    this.ilist[0].push({
        id: 'aa'
    });
    this.ilist = Object.assign([],this.ilist); //加上这个函数就可以了;
}
附:还有另外一种方案是用this.$set的方案,不知道是不是用错了,所以没有奏效,感觉还是用这个比较好。

参考资料:

https://cn.vuejs.org/v2/guide/list.html#对象变更检测注意事项
https://blog.csdn.net/qq_37285177/article/details/78935831
    原文作者:LazyHua
    原文地址: https://segmentfault.com/a/1190000019931174
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞