2015-09-15 2 views
2

Я хочу обновить свои структурированные данные частично с помощью ReactiveDict, и у меня есть пользовательский интерфейс (модальная форма), зависящий от UI (модальная форма) от этих данных.
ReactiveVar не может предоставить мне функции, которые я использую с ReactiveDict.Как вручную уничтожить ReactiveDict?

Однако я хотел бы отказаться от именованного экземпляра ReactiveDict, чтобы освободить память или потому, что я хочу повторно использовать его имя.

Как удалить именованный экземпляр ReactiveDict вручную без обновления моей страницы?

+0

Ну .. Если я предоставляю какое-то имя его конструктору, то я не могу создать другой с тем же именем (это нормально), пока страница не будет обновлена. И если я создам ReactiveDict, не передавая какое-либо имя конструктору, тогда хорошо. Но я не уверен, что это не вызовет проблем с памятью. –

+0

К сожалению, выделение памяти - это скорее кошмар в JavaScript, а тем более в Метеор, где реактивные вещи передаются и вычисляются и дублируются везде. Я думаю, что единственное, что вы можете сделать, это «удалить» как можно больше вещей и надеяться, что все будет хорошо. –

ответ

3

Все именованные экземпляры ReactiveDict s хранятся в ReactiveDict._dicsToMigrate.

Чтобы удалить его, просто delete ReactiveDict._dicsToMigrate['my dictionary'] и он не будет перенесен. Затем вы можете использовать другие ссылки на вашу переменную (поле объекта, ...), и все сделано.

Вам также понадобятся stop все просмотры.

Во время моих испытаний я также отметил, что мигрированные, но неиспользуемые словари не переносятся снова. Хех.

Смежные вопросы