[英]Backbone: Create collection from JSON
我正在嘗試將JSON(從php的json_encode)加載到Backbone JS集合中。 我把問題簡化為:
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) { }
});
錯誤:
未捕獲的TypeError:不能使用'in'運算符來搜索'id'
類似問題: Backbone:從服務器獲取集合
我的JSON肯定看起來格式正確,我錯過了一些明顯的東西嗎? 我試圖使用簡單的id:“1”而不是“id”具有相同的結果。
您的JSON仍然是字符串格式。 在分配之前將它傳遞給JSON.parse:
var myJSON = JSON.parse('[{"id":1,"name":"some name","description":"hmmm"}]');
您忘記了模型中的defaults
哈希defaults
。
MyObject = Backbone.Model.extend({
defaults: {
id: null,
name: null,
description: null
}
});
請參閱文檔
所以我可能完全忽略了這一點,但問題似乎是陣列周圍的“單引號”。 就是這樣:
var myJSON = '[{ "id":"1","name":"some name","description":"hmmm"}]';
應該:
var myJSON = [{ "id":"1","name":"some name","description":"hmmm"}];
Php,afik,不添加單引號,所以它應該像更改一行說的那樣簡單:
$my_js = "var myJSON = '" . json_encode($my_array_to_send)) . "';";
至:
$my_js = "var myJSON = " . json_encode($my_array_to_send)) . "; ";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.