遇到这种情况怎么写更优雅?

  <vxe-column field="sourceDataType" title="源数据类型" :edit-render="{}">

<template #default="{ row }">

<span>{{sourceDataTypeOptions.find(x => x.value === row.sourceDataType) ?

sourceDataTypeOptions.find(x => x.value === row.sourceDataType).label : ''

}}</span>

</template>

<template #edit="{ row }">

<el-select

style="width: 100%"

v-model="row.sourceDataType"

filterable

placeholder="请选择源数据类型"

>

<el-option

v-for="item in sourceDataTypeOptions"

:key="item.value"

:label="item.label"

:value="item.value"

></el-option>

</el-select>

</template>

</vxe-column>

代码如上,sourceDataTypeOptions是一个数组,我想判断
sourceDataTypeOptions.find(x => x.value === row.sourceDataType)找到值的时候取这个值的labe,没有找到值得时候用空字符串。
不写format函数,直接在这里写怎样才能写得更优雅


回答:

(sourceDataTypeOptions.find(x => x.value === row.sourceDataType)||{}).label||''

通用给默认值的写法


回答:

在数组接收并赋值的时候就提前转换好并且拼接上去,而不是在模版层(template)当中处理。

比如说

<template>

<el-table :data="tableData" style="width: 100%">

<el-table-column prop="date" label="日期" />

<el-table-column prop="name" label="姓名" />

<el-table-column prop="address" label="地址" />

</el-table>

</template>

<script>

export default {

data() {

return {

tableData: [],

userList:[]

}

},

methods:{

loadData(){

fetchTableData().then(res => {

this.tableData = res.result.data.map(item => {

const userInfo = this.userList.find(user => user.id === item.usr) || { name: '', address: '' }

return { ...item, userName: user.name, userAddress: user.address }

})

})

}

}

}

</script>

或者通过 filter 来过滤,比如说

<template>

<el-table :data="tableData" style="width: 100%">

<el-table-column prop="date" label="日期" />

<el-table-column prop="name" label="姓名">

<span slot-scope="{row}">{{ row | getRowUserInfo('name') }}</span>

</el-table-column>

<el-table-column prop="address" label="地址">

<span slot-scope="{row}">{{ row | getRowUserInfo('address') }}</span>

</el-table-column>

</el-table>

</template>

<script>

export default {

data() {

return {

tableData: [],

userList:[]

}

},

filters:{

filters:{

getRowUserInfo(row, field) {

const userInfo = this.userList(user => user.id === row.usr) || {}

return userInfo[field] || ''

},

}

}

</script>

但是其实还是推荐在一开始就把数据处理好(也就是第一种),以优化业务代码的性能。


回答:

script 里面写个method处理数据,不要在 template 里面.


回答:

{{sourceDataTypeOptions.include(row.sourceDataType) ?

          sourceDataTypeOptions.find(x => x.value === row.sourceDataType).label : ''}}

以上是 遇到这种情况怎么写更优雅? 的全部内容, 来源链接: utcz.com/p/933320.html

回到顶部