Таблица "element-ui" Как изменить пустые ячейки на '-'.
var Main = {
data() {
return {
tableData: [{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles'
}, {
date: '2016-05-02',
name: '',
address: 'No. 189, Grove St, Los Angeles'
}, {
date: '2016-05-04',
name: '',
address: 'No. 189, Grove St, Los Angeles'
}, {
date: '2016-05-01',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles'
}]
}
}
}
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
@import url("//unpkg.com/element-ui@2.4.11/lib/theme-chalk/index.css");
<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/element-ui@2.4.11/lib/index.js"></script>
<div id="app">
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="Date" width="180">
</el-table-column>
<el-table-column prop="name" label="Name" width="180">
<template slot-scope="scope">
{{scope.row.name || '-'}}
</template>
</el-table-column>
<el-table-column prop="address" label="Address">
</el-table-column>
</el-table>
</template>
</div>
Я знаю, что если я использую тег 'template', я могу преобразовать нулевые данные в '-'.
теперь давайте предположим, что у меня более 100 таблиц, и я не знаю, какие ячейки могут быть нулевыми.
Размещение шаблона во всех столбцах el-таблицы будет очень тяжелой работой и неэффективным способом.
Я хочу знать, есть ли способ заменить пустые ячейки на "-" одновременно. помогите мне, ребята
3 ответа
Только:
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="Date" width="180">
</el-table-column>
<el-table-column prop="name" label="Name" width="180">
<template slot-scope="scope">
<!-- Replace empty cell by '-' --->
<div class="cell" v-if="scope.row.name !== null">{{ scope.row.answer }}</div>
<div v-else class="cell">-</div>
</template>
</el-table-column>
<el-table-column prop="address" label="Address">
</el-table-column>
</el-table>
Последний код: измените область видимости на #default:
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column empty="NA" prop="date" label="Date" width="180" />
<el-table-column prop="name" label="Name" width="180" >
<template #default="scope">
<div style="display: flex; align-items: center">
<div class="cell" v-if="scope.row.name !== ''">{{ scope.row.name }}</div>
<div v-else class="cell">-</div>
</div>
</template>
</el-table-column>
<el-table-column prop="address" label="Address" />
</el-table>
</template>
Я уверен, что есть много способов достичь этого. Но попробуйте это:
computed: {
items() {
let data = this.tableData;
for(let item of data) {
for(let key in item) {
if (!item[key]) {
item[key] = '-';
}
}
}
return data;
}
}
<template>
<el-table :data="items" style="width: 100%">
<! -- the rest of the content -->