Как отображать в таблице element-ui данные из других таблиц и отображать да или нет в зависимости от идентификатора
Я пытаюсь отобразить в таблице информацию об определенном элементе, в этом случае это вопрос, например, информацию о том, к какому разделу он принадлежит, какой тип ответа и если вопрос является необязательным.
Сейчас я могу отображать только идентификаторы вроде section_id
, response_type_id
а также optional
. Я хочу отобразить имена первых двух, напримерsection: school
, response_type: text
а для необязательного - это не идентификатор другой таблицы, а логическое значение, я хочу отображать его как optional: yes
.
Если в моем столе я звоню scope.row
чтобы увидеть, что у меня есть, это просто информация о самом вопросе, например
question
section_id
response_type_id
optional
Эта информация полезна, но я хочу использовать ее, чтобы вывести имя раздела и имя типа для ответа. В необязательном порядке я хотел бы иметь возможность отображать да или нет вместо 1 или 0.
Это мой код контроллера
public function index()
{
return Inertia::render('Question/Index', [
'survey_question' => SurveyQuestion::all(),
'survey_section' => SurveySection::all(),
'response_type' => ResponseType::all(),
'options' => SurveyQuestionOption::all()
]);
}
Если я посмотрю на Vue DevTools, я могу увидеть эти массивы, полные данных, но я не уверен, как получить к ним доступ.
Это мой стол
<el-table
:data="survey_questions">
<el-table-column
prop="question"
label="Pregunta">
</el-table-column>
<el-table-column
prop="survey_section_id"
label="Seccion">
</el-table-column>
<el-table-column
prop="response_type_id"
label="Tipo de Respuesta">
</el-table-column>
<el-table-column
prop="optional"
label="Opcional">
</el-table-column>
</el-table>
Если я изменю опору на что-то вроде этого, ничего не появится, он просто пуст, или я получаю такую ошибку
<el-table-column
label="Seccion">
<template slot-scope="scope">
<p> {{ scope.row.survey_section.title }} </p>
</template>
</el-table-column>
Error in render: "TypeError: Cannot read property 'title' of undefined"
1 ответ
Я хотел бы использовать formatter
: https://element.eleme.io/#/en-US/component/table#table-column-attributes
В вашем коде это будет выглядеть примерно так:
<el-table
:data="survey_questions">
<el-table-column
prop="question"
label="Pregunta">
</el-table-column>
<el-table-column
prop="survey_section_id"
label="Seccion"
:formatter="surveyFormatter">
</el-table-column>
<el-table-column
prop="response_type_id"
label="Tipo de Respuesta">
</el-table-column>
<el-table-column
prop="optional"
label="Opcional"
:formatter="optionalFormatter">
</el-table-column>
</el-table>
<script>
export default {
data() {
return {...}
},
methods: {
surveyFormatter(row, column, cellValue) {
return row.survey_section.title;
},
optionalFormatter(row, column, cellValue) {
return cellValue ? 'yes' : 'no';
}
}
}
</script>