Вы должны хранить информацию о состоянии каждого элемента (если он был нажат) в ваших данных. Затем, когда вы нажимаете на кнопку, вы должны обновить свойство clicked для определенного элемента. Наконец, если item.clicked установлен в true, вы покажете свой дочерний компонент (или любой другой html).
<template>
<div>
<div v-for="item in items" :key="item.id">
<button @click="item.clicked = true" >Show child</button>
{{item.name}}
<div v-if="item.clicked">Item child</div>
</div>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
data: function() {
return {
items: [
{
id: 1,
name: 'test1',
clicked: false
},
{
id: 2,
name: 'test2',
clicked: false
},
{
id: 3,
name: 'test3',
clicked: false
}
]
}
}
}
</script>
Со старыми данными, не используемыми в большинстве запросов, лучшее решение к таблицам разделов ключ, который дифференцируется устаревший от текущих данных (таких как дата, currency_id или подобные вещи). Можно затем поместить устаревшие данные в отдельные таблицы, базы данных или даже серверы (в зависимости от конфигурации, у Вас есть выполнение).
Оборотная сторона к этому - то, что Ваше приложение должно стать осведомленным о разделе для знания, где найти данные (хотя существуют абстракции, которые помогают соглашению с sharding и partioning).
В нескольких случаях у меня были старые данные и старая программа, дублированная с соответствующим набором полномочий только для чтения. Таким образом у пользователей есть способность видеть старые данные и выполнение создания отчетов с помощью старой программы. Затем Вы свободны усовершенствовать современную программу, как Вы считаете целесообразным, удаляя столбцы или таблицы, перемещая некоторые данные, и т.д.
Для любой объект, который может иметь ограниченное время жизни, просто добавьте компонент времени в его определении. Например, Ваша итальянская лира может быть смоделирована как:
CREATE TABLE Currency (CurrencyID NUMBER, CurrencyStartDate DATETIME, CurrentEndDate DATETIME)
Можно затем исключить валюты с истекшим сроком из любых прикладных функций, связанных с текущим действием, и все еще поддерживать отношения для исторических данных.
Действительно необходимо обработать его индивидуальный, так как это - бизнес-правила, который определяет, когда устаревшая запись релевантна или нет. Например, в некоторых исторических переспортивных состязаниях имело бы смысл включать продажи СССР, в других случаях Вы пропустите его.
Общий шаблон должен был бы иметь "релевантный из/в" поле даты и времени на записях. В этом случае исторические доклады могут включать в себя типы, который релевантен в течение периода. (Простое решение было бы булевым "устаревшим" флагом на записях, но так как это не указывает, когда это было релевантно, это привычка быть столь же полезным для исторического отчета.)
Это - стандартная Медленно изменяющаяся проблема Размера. У Вас есть SCD's с диапазонами даты и/или состоянием.
"каждый из них имеет в виду индивидуальное решение, и трудно знать, каким типам объектов нужна эта специальная обработка"
Да. Извините за это. Необходимо проанализировать данные и думать. Никакой простой способ вокруг интеллектуальной части этого.
Я предложил бы разделить операционную систему и систему отчетности. Имейте одну базу данных для операционного - система онлайн и другой для создания отчетов. (Могло быть хранилище данных или простое другая база данных) на основе того, как универсальный Вам нужна система отчетности, чтобы быть.
Переместите данные от операционной системы до системы отчетности периодически. (частота зависит от природы Вашей системы). Все исторические отчеты были бы основаны на базе данных создания отчетов. База данных онлайн также содержала бы отчеты, но не (очень) исторические.
И, да. Необходимо поддержать даты или флаги на таблицах, чтобы решить, истек ли объект.
В дополнение к тому, что Eran сказал о paritioning, Вы могли частично автоматизировать процесс решения, что поместить в заархивированный parition при наличии столбца LastModified или подобный. Затем просто partioning на основе LastModified <-1y или так, система должна узнать о самих устаревших данных.
Одно решение могло быть (принимающие записи, ссылающиеся на устаревшие данные, являются самыми старыми): заархивируйте те записи и удалите старые справочные данные.
Коммерческий DBMS (Informix, DB2, вероятно, Oracle...) имеет возможности разделения или фрагментации, таким образом, что можно поместить различные данные в различные фрагменты, и оптимизатор запросов проигнорирует фрагменты, что это знает, что этому не нужно. Можно иногда использовать их для размещения менее часто используемых данных в области хранения, только используемые для архаичных данных. Преимущество этого состоит в том, что системные соглашения с размещением (хорошо, система плюс DBA), и приложения абсолютно не обращают внимания на него.
Любая схема, которая требует изменений в приложениях для создания отчетов, обречена повредить по крайней мере некоторые из тех приложений.
Можно также обновить старые данные. Например, можно преобразовать суммы итальянской лиры в Европейские суммы. Но это - действительно индивидуальное решение. Вы знаете свою систему и требования лучше всего.
Я нашел подобный вопрос: Что лучший способ состоит в том, чтобы реализовать мягкое удаление? контакт с действием отмечает решение.
И вот, другой на действии отмечает 'активный' флаг или нет? для mysql и postgresql.
На основе этих двух флагов действия вопросов и/или таблицы разделение наиболее распространенные решения проблемы.