В моем приложении у меня есть ItemsService
, который получает элементы с сервера и сохраняет их как объекты JSON в своей переменной cache
. Элементы могут присутствовать во многих местах, например. в таблице или в графике/диаграмме и так далее.Как реализовать двунаправленную связь между двумя массивами?
Например, когда я инициализирую table
- мне нужно выбрать только определенные элементы из cache
, например. 1-й, 3-й, 7-й.
Как реализовать двунаправленную связь между ними? В основном я хочу, чтобы table
содержал ссылки на конкретные предметы от cache
, поэтому, когда я меняю элемент либо в cache
, либо в table
- его состояние будет постоянно синхронизироваться, потому что оно такое же Пункт.
Также, когда я удаляю Товар от table
- его необходимо удалить из cache
.
Вот пример table
и cache
структур:
Таблица:
table: {
"36": { // it's a name of a row
"72": [items], // it's a name of a column with corresponding items
"73": [items],
"74": [items]
},
"37": {
"72": [],
"73": [items],
"74": [items]
},
"38": {
"72": [],
"73": [],
"74": []
}
}
кэш ItemsService (упрощенный вариант):
ItemsService = {
cache: [items]
};
структура товара:
{
id: 3,
parent_id: 1,
name: 'First Item',
siblings: [1,2,3],
active_users: [{user_id: 1, avatar_url: 'http://...'}, ...],
// 50 more fields :)
}
необходимо также отметить, что я использую angular-ui-sortable
плагин, чтобы перетаскивание элементов между столбцами/строками, и мне нужно, чтобы обеспечить ng-model
с массивом (Я думаю). Вот как это выглядит прямо сейчас:
<td ui-sortable="vm.sortableOptions"
ng-model="vm.table[row.id][column.id]">
<sb-item itemid={{item.id}}
ng-repeat="item in vm.table[row.id][column.id]">
</sb-item>
</td>
Вы должны показать нам обе структуры массивов, поскольку существует так много способов сделать это, что это будет зависеть от того, как их структуры. – Buzinas
Я предусмотрел структуры – yaru
Структура 'items' является самой важной. – Buzinas