首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Backbone:从JSON创建集合

Backbone:从JSON创建集合
EN

Stack Overflow用户
提问于 2012-01-16 14:05:05
回答 3查看 28.9K关注 0票数 16

我正在尝试将JSON (从php的json_encode)加载到一个主干JS集合中。我把这个问题简化为:

代码语言:javascript
复制
var myJSON = '[{ "id":"1","name":"some name","description":"hmmm"}]';

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

和:

代码语言:javascript
复制
MyObject = Backbone.Model.extend({

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

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

错误:

未捕获TypeError:无法使用' in‘运算符在中搜索'id’

类似的问题:Backbone: fetch collection from server

我的JSON格式肯定是正确的,我是不是遗漏了什么明显的东西?我尝试简单地使用id:"1“,而不是"id”,结果是一样的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-16 14:31:28

您的JSON仍然是字符串格式。在赋值之前将其传递给JSON.parse:

代码语言:javascript
复制
var myJSON = JSON.parse('[{"id":1,"name":"some name","description":"hmmm"}]');
票数 13
EN

Stack Overflow用户

发布于 2012-01-16 14:24:43

您忘记了模型中的defaults散列。

代码语言:javascript
复制
MyObject = Backbone.Model.extend({
  defaults: {
    id: null,
    name: null,
    description: null
  }
});

请参阅documentation

票数 3
EN

Stack Overflow用户

发布于 2013-05-04 17:52:15

所以我可能完全忽略了这一点,但问题似乎是数组周围的“单引号”。也就是说,这个:

代码语言:javascript
复制
var myJSON = '[{ "id":"1","name":"some name","description":"hmmm"}]';

应该是:

代码语言:javascript
复制
var myJSON = [{ "id":"1","name":"some name","description":"hmmm"}];

Php,afik,没有添加单引号,所以它应该像更改一行一样简单,如下所示:

代码语言:javascript
复制
$my_js = "var myJSON = '" . json_encode($my_array_to_send)) . "';";

至:

代码语言:javascript
复制
$my_js = "var myJSON = " . json_encode($my_array_to_send)) . ";  ";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8876303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档