Javascript id为的主干集合中的获取问题
以下是我的JSON:Javascript id为的主干集合中的获取问题,javascript,jquery,backbone.js,underscore.js,handlebars.js,Javascript,Jquery,Backbone.js,Underscore.js,Handlebars.js,以下是我的JSON: [ { "id" : "1", "type" : "report" }, { "id" : "2", "type" : "report" }, { "id" : "1", "type" : "email" }, ] 考虑一下,json是从主干收集->服务调用返回的。 现在,当我使用json响应使用主干视图和Handlebar模板系统呈现html表时。 显示2行,而应显示3行 注: 集合解析响应返回正确的json
[
{
"id" : "1",
"type" : "report"
},
{
"id" : "2",
"type" : "report"
},
{
"id" : "1",
"type" : "email"
},
]
考虑一下,json是从主干收集->服务调用返回的。
现在,当我使用json响应使用主干视图和Handlebar模板系统呈现html表时。
显示2行,而应显示3行
注:
集合解析响应返回正确的json(即3行)。
当我使用集合解析和唯一随机生成的数字覆盖id
时,所有3行都会显示出来。
这不好,因为我不想更改id
我希望该行显示如下:
1 reports
2 reports
1 email
从文件中 请注意,将相同的模型(具有相同id的模型)添加到 多次收集是不可行的 虽然我看不出两个不同对象应该具有相同id的原因,但您可能有一个有效的原因。建议为json响应中的每个对象添加另一个属性,
\u dummyId
,并从服务器端将其设置为自动递增值。在客户端,在模型定义代码中,将idAttribute
设置为\u dummyId
JSON响应
[
{
"id" : "1",
"_dummyId": "1",
"type" : "report"
},
{
"id" : "2",
"_dummyId": "2",
"type" : "report"
},
{
"id" : "1",
"_dummyId": "3",
"type" : "email"
},
]
您的模型定义
也就是说,我确实希望主干中有一个优雅的设置,使主干集合成为列表而不是集合 从的文档中 请注意,将相同的模型(具有相同id的模型)添加到 多次收集是不可行的 虽然我看不出两个不同对象应该具有相同id的原因,但您可能有一个有效的原因。建议为json响应中的每个对象添加另一个属性,
\u dummyId
,并从服务器端将其设置为自动递增值。在客户端,在模型定义代码中,将idAttribute
设置为\u dummyId
JSON响应
[
{
"id" : "1",
"_dummyId": "1",
"type" : "report"
},
{
"id" : "2",
"_dummyId": "2",
"type" : "report"
},
{
"id" : "1",
"_dummyId": "3",
"type" : "email"
},
]
您的模型定义
也就是说,我确实希望主干中有一个优雅的设置,使主干集合成为列表而不是集合 如果要解决此问题,必须为添加到集合中的每个模型设置新的唯一id。 尝试以下方法:
initialize: function() {
this.set("id", this.generateID());
},
generateID = function () {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
如果需要原始id,则需要在创建新id之前和之后保存它,然后在另一个模型属性中设置原始id。
当我将@amith george solution设置为另一个
dummyId
时,请忽略我。如果要解决此问题,必须为添加到集合中的每个模型设置新的唯一id。
尝试以下方法:
initialize: function() {
this.set("id", this.generateID());
},
generateID = function () {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
如果需要原始id,则需要在创建新id之前和之后保存它,然后在另一个模型属性中设置原始id。
当我将@amith george solution设置为另一个dummyId
尝试更改idAttribute尝试更改idAttribute时,主干忽略我