backbone.js - Safely remove and destroy backbone objects -


i building spa , trying figure out safe , clean way delete backbone entities when navigating away 1 section of application. aware of model.destroy(), view.remove() , collection.reset() methods. main concerns are:

  • model.destroy() takes care of destroying model on server. 1 still need manually delete javascript model?
  • similariy, realize view.remove() remove view dom. how should 1 safely rid of view object?
  • collection.reset() clears models in collection. delete underlying javascript model objects or need explicitly deleted?
  • how 1 rid of collection object itself?

my questions may seem simple have been confusing me while. have not found useful information regarding exact problem why decided post here. relatively new javascript , unaware of javascript's garbage collection scheme. javascript have garbage collector , take care of deleting such objects?

i looking understanding best way remove views.

  • view.remove() removes view dom. guess 1 still needs take care of removing/destroying underlying model , unbinding event listeners. correct?
  • i use _.bindall change context of function call. have not come across way unbind binding. understanding says unnecessary. right?

here resource learning garbage collection in javascript:

https://developer.mozilla.org/en-us/docs/web/javascript/memory_management

to summarize, thing need worry backbone removing custom event handlers in view, , common way override remove , remove handlers before calling backbone.view.prototype.remove. don't need manually remove events declared in events property of view, if using that.

to little more specific, lets consider 3 types of objects asking in turn. if using backbone router, creating view object in router method, maybe assigning var, , setting html somewhere on page. when user navigates away, different router method invoked, , reference created view unreachable. garbage collected assuming didn't create property on window or root level object or that.

the remove method removing view dom. garbage collector takes care of removing view memory. remove method convenient place put cleanup code need run before taking view off page, unhook custom event handlers here.

likewise, model.destroy not destroying model object stored in memory, sending ajax delete request server. model objects garbage collected else, , go away once unreachable. if references model contained within view, removing view cause model garbage collected. same goes collections.

and last point, underscore bind not issue. binding context (the value of this function invoked with), not binding event handlers. remove event handlers usual.


Comments

Popular posts from this blog

java - Spring Data JPA: Why findOne(id) executing delete query internally? -

python - Mongodb How to add addtional information when aggregating? -

java - Incorrect order of records in M-M relationship in hibernate -