gpt4 book ai didi

backbone.js - 我的模型 ID 与 CIDS 冲突(例如 : "c7" )

转载 作者:行者123 更新时间:2023-12-05 01:36:55 24 4
gpt4 key购买 nike

我是 backbone 的新手。

在对无法将我的一些模型添加到集合中并且有时使用 collection.get(id) 得到错误的模型感到困惑之后,我发现我的模型 ID 与 Backbone 冲突cids.

我的模型 ID 类似于“c7”或“c5e6”。虽然后者没问题,但“c7”是 Backbone 拥有的集合的第七个元素的 cid。

因此,如果我请求 collection.get('c7') 并期望 null,我反而会得到 Backbone 赋予 cid“c7”的元素。如果我添加一个 ID 为“c7”的元素,我将永远不会用 get("c7") 取回它。

我想知道我是否是第一个遇到这个问题的人,我没有找到任何关于 Backbone ID 语法限制的信息,有没有办法解决这个问题?作为解决方法,我会将自己的 ID 保存在自定义属性中,并且必须使用 collection.where 而不是 collection.get

有什么更好的主意吗?

最佳答案

如果你看Backbone source code ,您将看到模型中的 cid 在构造函数中由

确定
this.cid = _.uniqueId('c');

c 是一个任意前缀,这意味着您可以通过覆盖 _.uniqueId 来消除您的 ID 歧义,例如

_._uniqueId = _.uniqueId;
_.uniqueId = function(prefix) {
if (prefix === 'c') {
prefix = 'cc';
}
return _._uniqueId(prefix);
};

没有覆盖:http://jsfiddle.net/nikoshr/KmNSr/和它:http://jsfiddle.net/nikoshr/KmNSr/1/

关于backbone.js - 我的模型 ID 与 CIDS 冲突(例如 : "c7" ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17655752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com