簡體   English   中英

Backbone:從JSON創建集合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM