Created
August 20, 2013 16:59
-
-
Save mspanish/6284183 to your computer and use it in GitHub Desktop.
Loading multiple models from Ajax into Backbone collections - from StackOverflow http://stackoverflow.com/questions/9781102/backbone-multiple-collections-fetch-from-a-single-big-json-file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Backbone is great for when your application fits the mold it provides. But don't be afraid to go around it when it makes sense for your application. It's a very small library. Making repetitive and duplicate GET requests just to fit backbone's mold is probably prohibitively inefficient. Check out jQuery.getJSON or your favorite basic AJAX library, paired with some basic metaprogramming as following: | |
*/ | |
//Put your real collection constructors here. Just examples. | |
var collections = { | |
Languages: Backbone.Collection.extend(), | |
ProductTypes: Backbone.Collection.extend(), | |
Menus: Backbone.Collection.extend() | |
}; | |
function fetch() { | |
$.getJSON("/url/to/your/big.json", { | |
success: function (response) { | |
for (var name in collections) { | |
//Grab the list of raw json objects by name out of the response | |
//pass it to your collection's constructor | |
//and store a reference to your now-populated collection instance | |
//in your collection lookup object | |
collections[name] = new collections[name](response[name]); | |
} | |
} | |
}); | |
} | |
fetch(); | |
/* | |
Once you've called fetch() and the asyn callback has completed, you can do things like collections.Menus.at(0) to get at the loaded model instances. | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment