Я пытаюсь загрузить JSON (из json_encode php) в коллекцию JS Backbone. Я упростил задачу:Магистраль: создать коллекцию из JSON
var myJSON = '[{ "id":"1","name":"some name","description":"hmmm"}]';
var myCollection = new MyCollection(myJSON, { view: this });
И:
MyObject = Backbone.Model.extend({
id: null,
name: null,
description: null
});
MyCollection = Backbone.Collection.extend({
model: MyObject,
initialize: function (models,options) { }
});
Ошибка:
Uncaught TypeError: Cannot use 'in' operator to search for 'id' in
Похожие Issue: Backbone: fetch collection from server
Моя JSON, конечно, по-видимому, в правом формат, я пропущу что-то очевидное? Я попытался использовать просто id: «1», а не «id» с тем же результатом.
Да, и если данные извлекаются с использованием чего-то вроде метода $ .getJSON jquery, он будет автоматически называть JSON.parse. –
Документация действительно показывает pass json непосредственно на инициализацию по крайней мере в одном примере: http://documentcloud.github.com/backbone/#Collection-toJSON (хотя цель этой демонстрации заключается в том, как экспортировать json) – pws5068
Обратите внимание, что они не упоминают, что массив, который они передают в конструктор коллекции, уже проанализирован. Документация может, вероятно, содержать небольшое пояснение, но помнить, что JSON обычно передается между сервером и клиентом в строчном формате и нуждается в анализе после получения или стрификации перед отправкой. – kinakuta