У меня есть таблица, написанная на vue / element-ui.В этой таблице есть повторяющиеся столбцы, которые я пытаюсь преобразовать в различные компоненты для повторного использования.Когда я пытаюсь выполнить рефакторинг, я получаю одну из нескольких ошибок:
- При выборе параметра раскрывающиеся списки не обновляются вообще.
- Различные раскрывающиеся списки ведут себя так, как если бы они были едины.Это означает, что они обновляются, чтобы всегда быть одним и тем же параметром
Поскольку у меня есть дубликаты столбцов, и потому что я должен отслеживать значения, которые они имеют для аутсорсинга, компонент имеет смысл для меня.Поэтому я попытался передать на аутсорсинг весь столбец родительской таблицы или только отдельные дочерние столбцы, заключенные в div.
Я также попытался использовать селекторы в своей области видимости, что дает мне вторую ошибку, написанную выше.Я думал о том, что каждый из них может быть выбран в своем собственном компоненте, но тогда мне придется генерировать события всякий раз, когда они изменяются, для обновления текстового поля, а сейчас просто было бы просто связать все вместе в другом компоненте.
Это базовый код для таблицы:
<template>
<div>
<el-table :data="tableData">
<el-table-column label="Initial Risk">
<Calc/>
</el-table-column>
<el-table-column label="Residual Risk">
<Calc/>
</el-table-column>
</el-table>
</div>
</template>
<script>
import Calc from "./Calc.vue";
export default {
components: {
Calc
},
data() {
return {
tableData: [{}, {}]
};
}
};
</script>
Это базовый код для Calc-компонента:
<template>
<div>
<el-table-column></el-table-column>
<el-table-column label="Severity" width="100">
<template slot-scope="scope">
<el-select
placeholder="Select"
v-model="scope.row.severitySelect"
>
<el-option
v-for="severity in severities"
:key="severity"
:label="severity"
:value="severity"
></el-option>
</el-select>
</template>
</el-table-column>
</div>
</template>
<script>
export default {
data() {
return {
severities: ["negligible", "minor", "major", "severe", catastrophic"]
};
}
};
</script>
Вы можете найти более полный пример множественного выбора иполе ввода здесь: https://codesandbox.io/s/vueelementui-ymgi0
Теперь я ожидал, что каждый компонент будет управлять своими собственными данными, но как только выборки будут помещены в столбец el-таблицы, они, похоже, уже не будут работать так, как ожидалось, и будут вести себя какобъяснено выше.