Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何填充Backbone.js集合';s_byId数组,这样我就可以在上面使用'get'?_Backbone.js - Fatal编程技术网

如何填充Backbone.js集合';s_byId数组,这样我就可以在上面使用'get'?

如何填充Backbone.js集合';s_byId数组,这样我就可以在上面使用'get'?,backbone.js,Backbone.js,我有一个集合,集合.models返回一个模型数组。但是,当我调用collection.get(someId)(这个id是collection.models数组中的模型的id)时,我得到了未定义的。查看集合。\u byId,它看起来像一个空对象 如何正确填充\u byId,以便使用get?或者我在初始化我的集合时出错了,这就是为什么\u byId是空的。因为我在Rails中使用它,Rails生成的默认json在主干上不起作用。我不知道为什么我在努力学习时没有看到它。无论如何,你可以: 更改Rail

我有一个集合,
集合.models
返回一个模型数组。但是,当我调用
collection.get(someId)
(这个id是
collection.models
数组中的模型的id)时,我得到了
未定义的
。查看
集合。\u byId
,它看起来像一个空对象


如何正确填充
\u byId
,以便使用
get
?或者我在初始化我的集合时出错了,这就是为什么
\u byId
是空的。

因为我在Rails中使用它,Rails生成的默认json在主干上不起作用。我不知道为什么我在努力学习时没有看到它。无论如何,你可以:

  • 更改Rails生成JSON的方式

  • 我有点晚了,但希望这对其他人仍然有用

    集合。_byId只是一个普通的js哈希对象。这真的没什么了不起的。如果希望Collection.get工作,只需将所有模型添加到_byId散列中即可

    在集合的范围内:

    var someId = '123'; // any id will do
    
    this._byId[someId] = someModel; // someModel.id = '123'
    
    console.log(!!this.get(someId)); // should return true
    

    听起来OP有一个稍微不同的问题,但我经历了一个类似的问题,我想我应该发布对我有用的东西

    与原始版本一样,
    collection.models
    包含正确的模型,但在我的例子中,
    \u byId
    散列包含的模型版本不是空的。然而,
    \u byId
    不包含具有正常id的模型(通常有两个版本-一个
    id
    1和一个
    cid
    1),因此我无法使用
    collection.get(id)
    检索它。当我读到
    cid
    时,我的问题变得更清楚了。从文档中:

    当模型尚未保存到服务器,并且没有最终的真实id,但需要在UI中可见时,客户机id非常方便


    我认为等待服务器不是问题,因为我的
    cid
    型号和
    集合。型号
    具有正确的ID。但是,将
    {wait:true}
    作为
    集合中的一个选项传入。create
    为我解决了这个问题。

    如何初始化集合?我遵循了初始化部分的。我使用的是类似json(将大多数属性精简为简洁)。我在创建控制器类时将其传递给它:
    controller=newmycontroller(jsonYouSeeAbove)
    。也许JSON是错的?我明白我的问题了。我使用的
    to_json
    方法没有返回正确的json序列。我应该返回一个哈希数组,如gist中哈希中的“model”值。