Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Backbone: Create collection from JSON

I'm attempting to load JSON (from php's json_encode) into a Backbone JS collection. I've simplified the problem to:

var myJSON = '[{ "id":"1","name":"some name","description":"hmmm"}]';

var myCollection = new MyCollection(myJSON, { view: this });

And:

MyObject = Backbone.Model.extend({

  id: null,
  name: null,
  description: null
});

MyCollection = Backbone.Collection.extend({ 
model: MyObject,
initialize: function (models,options) { }
});

Error:

Uncaught TypeError: Cannot use 'in' operator to search for 'id' in

Similar Issue: Backbone: fetch collection from server

My JSON certainly appears to be in the right format, am I missing something obvious? I have attempted using simply id: "1" as opposed to "id" with the same result.

like image 705
pws5068 Avatar asked Jan 16 '12 06:01

pws5068


1 Answers

Your JSON is still in string format. Pass it to JSON.parse before assigning it:

var myJSON = JSON.parse('[{"id":1,"name":"some name","description":"hmmm"}]');
like image 81
kinakuta Avatar answered Oct 18 '22 08:10

kinakuta