javascript – Backbone.js:无法将相同的模型添加到集合中两次
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Backbone.js:无法将相同的模型添加到集合中两次,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1615字,纯文字阅读大概需要3分钟。
内容图文
![javascript – Backbone.js:无法将相同的模型添加到集合中两次](/upload/InfoBanner/zyjiaocheng/752/b63ecf53dc154c41a11ec0d98b4bd9a0.jpg)
我刚开始使用backbone.js.我在从服务器获取数据时遇到问题.这是我从服务器获得的响应.
[{
"list_name":"list1",
"list_id":"4",
"created":"2011-07-07 21:21:16",
"user_id":"123456"
},
{
"list_name":"list2",
"list_id":"3",
"created":"2011-07-07 21:19:51",
"user_key":"678901"
}]
这是我的javascript代码……
// Router
App.Routers.AppRouter = Backbone.Router.extend({
routes: {
'': 'index'
},
initialize: function() {
},
index: function() {
var listCollection = new App.Collections.ListCollection();
listCollection.fetch({
success: function() {
new App.Views.ListItemView({collection: listCollection});
},
error: function() {
alert("controller: error loading lists");
}
});
}
});
// Models
var List = Backbone.Model.extend({
defaults: {
name: '',
id: ''
}
});
App.Collections.ListStore = Backbone.Collection.extend({
model: List,
url: '/lists'
});
// Initiate Application
var App = {
Collections: {},
Routers: {},
Views: {},
init: function() {
var objAppRouter = new App.Routers.AppRouter();
Backbone.history.start();
}
};
我在Backbone.js中的这一行上收到错误“无法将相同的模型添加到两次”
if (already) throw new Error(["Can't add the same model to a set twice", already.id]);
我检查了Backbone.js注释,发现第一个模型被添加到集合中,但第二个模型给出了这个错误.为什么会这样?我应该更改服务器端响应中的内容吗?
解决方法:
您的列表在其默认属性中具有id,这使得每个实例默认具有相同的ID,并且Backbone正在使用它来检测欺骗.如果您的数据使用list_id作为ID,则需要通过在List类定义中放入idAttribute:’list_id’来告诉Backbone.
另外,我更喜欢不在对象属性中复制类型信息(Backbone.js同意这一点).具有一致的属性名称是骨干所期望的并且更易于使用.因此,不要使用list_id和list_name,只需在所有类上使用id和name.
内容总结
以上是互联网集市为您收集整理的javascript – Backbone.js:无法将相同的模型添加到集合中两次全部内容,希望文章能够帮你解决javascript – Backbone.js:无法将相同的模型添加到集合中两次所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。