Подтвердить что ты не робот

Как удалить опорную модель на стороне клиента?

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

Спасибо!!

4b9b3361

Ответ 1

Это действительно зависит от того, что находится внутри этой модели. Если он привязан к событиям из других экземпляров - View/Collection/Models, вы должны удалить эти прослушиватели событий вручную, так как их невозможно удалить сразу.

Кроме того, Model.destroy() удаляет модель из любых коллекций (базовых документов):

Уничтожьте model.destroy([опции])

... Запускает событие "уничтожить" на модели, которая будет пузыриться через любые коллекции, содержащие ее...

То, что вам может понадобиться, это назначить новый метод уничтожения, который включает в себя запуск события и материал, который вы хотите удалить.

destroy: function(options) {
   // Any events you wish to switch off ( if you have any )
   SomeCollection.off('change', this.changeFn);

   Backbone.Model.prototype.destroy.apply(this, options);       
}

Возможно, вам также следует знать некоторые шаблоны для создания меньше мусора из моделей:

  • Не помещайте свою инициализированную модель в переменную (сохраняйте ее в коллекции);
  • Убедитесь, что вы пишете свой код таким образом, чтобы никакие события не связывались с моделью (используйте для этого виды/коллекции);
  • Сохраняйте код модели простым, поскольку модели в вашем приложении будут пронумерованы.

Думаю, следуя этим правилам, вам не нужно так беспокоиться о мусоре из ваших моделей.