热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javascript–Backbone.js:无法将相同的模型添加到集合中两次

我刚开始使用backbone.js.我在从服务器获取数据时遇到问题.这是我从服务器获得的响应.[{list_name:list1,list_id:4,create

我刚开始使用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.


推荐阅读
  • 本文介绍了如何在 Linux 系统上构建网络路由器,特别关注于使用 Zebra 软件实现动态路由功能。通过具体的案例,展示了如何配置 RIP 和 OSPF 协议,以及如何利用多路由器查看工具(MRLG)监控网络状态。 ... [详细]
  • 作为一名 Ember.js 新手,了解如何在路由和模型中正确加载 JSON 数据是至关重要的。本文将探讨两者之间的差异,并提供实用的建议。 ... [详细]
  • 本文介绍如何通过 JavaScript 实现一个基于鼠标坐标的 Tooltip 弹出层,详细解释了如何获取窗口和文档的尺寸及滚动位置,并优化了代码结构。 ... [详细]
  • 本文探讨了在Koa框架下,如何在启动服务前检查指定端口是否已被占用的方法,并提供了相应的代码示例。 ... [详细]
  • 本文深入探讨了服务器的主要作用,包括加速访问、增强安全性和绕过访问限制等,并详细介绍了如何正确配置代理服务器。 ... [详细]
  • Vue 移动端实现侧边滑出菜单功能
    本文详细探讨了如何在 Vue 移动端应用中实现侧边滑出菜单的效果,包括代码实例和样式设置,旨在为开发者提供实用的开发技巧。 ... [详细]
  • 本文将介绍网易NEC CSS框架的规范及其在实际项目中的应用。通过详细解析其分类和命名规则,探讨如何编写高效、可维护的CSS代码,并分享一些实用的学习心得。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文详细解释了华为ENSP模拟器中常用的命令,涵盖用户模式、系统模式、接口模式和地址池视图模式下的操作。这些命令对于进行计算机网络实验至关重要,帮助用户更好地理解和配置路由器及PC机的通信。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • npm run dev后报错 ... [详细]
  • Vue项目中应用骨架屏实践
    在当前开发的项目中,由于登录过程涉及多次重定向,导致用户体验不佳。为了改善这一状况,本文介绍了如何使用vue-skeleton-webpack-plugin插件在Vue项目中实现骨架屏,以减少用户感受到的白屏时间。 ... [详细]
  • 这是一个基于 React 构建的掘金移动版应用,主要模仿了掘金的 UI 设计,并进行了部分自定义调整。项目专注于移动端体验,同时支持服务端渲染和渐进式网络应用(PWA)功能。 ... [详细]
  • 我们通过一个综合实验,来加强对路由和交换的基本设置,远程管理,划分VLAN,VTP协议,STP协议,动态和静态路由协议的配置,以及DHCP,NAT,PPP,ACL的配置。各种技术及知识 ... [详细]
  • 本文介绍了使用Node.js开发超市管理系统的经验分享,重点讨论了项目中使用的技术栈及其实现细节,包括前端Bootstrap和后端Express框架的应用,以及MongoDB数据库的操作。 ... [详细]
author-avatar
邱文馨4966
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有