BDT is an extension for Chrome Developer Tools which helps in debugging Backbone-based apps. It's been developed by Tomasz Szczęśniak-Szlagowski and released under the MIT License. It makes use of Backbone.Debug by Andrew Terris.
Pull requests are welcome!
- $view console variable after inspecting a DOM Element (points to the closest View instance)
- Containing Views Hierarchy in Elements panel
- Logs in Backbone Panel:
- Events
- Syncs
- View-DOM Binding
- Instantiated Objects
BDT is yet to be released, so you need to install it manually.
- Clone this repo
- Go to Tools -> Extensions in Google Chrome
- Check Developer mode and click Load unpacked extension
- Choose the cloned repo directory
- Open a new tab (for first time users)
- Open the Chrome Dev Tools
- Go to the Backbone Tab (Usually it will be near the Console tab)
- Make sure that Inject Backbone.Debug (changing this will cause a page reload) has been checked
- Create a new bookmark and add the following as its contents/url:
javascript:(function(){var o=window.$view;if(!o)return;\_.each(['Adroll.Collections','Adroll.Models','Adroll.Views','Dashboard.Collections','Dashboard.Models','Dashboard.Views'],function(ns){var parts=ns.split('.'),v=window;\_.each(parts,function(p){v=v[p]});\_.each(v,function(k,n){if(\_.isFunction(k)&&o instanceof k){var p=' ';if(Object.getPrototypeOf(o)===k.prototype)p='*';console.log(p+ns+'.'+n);}});});})();
- Now when you Inspect Element, you can click on this bookmarklet and check the console for the view name.
By default, Backbone Developer Tools require window.Backbone to be available on DOMContentLoaded. We have a fallback method for asynchronously loaded Backbone that seems to work pretty well, too.
If neither the default nor the fallback succeed in injecting Backbone Developer Tools, you can modify js/inject/attach.js to meet your specific requirements.
You could also try modifying js/inject/logger.js and js/inject/backbone.debug.js and including them by yourself. Note that unless you alter the extension itself, you'll need to expose the logger at window.Backbone.debug.logger.