Backbone.js 更新集合中的模型

2024-02-13

假设您正在使用 Backbone.js 构建 Twitter 克隆。您有一组推文。每条推文显然都是推文模型的一个实例。

您创建该集合的一个实例,获取最新的 10 条推文,渲染它们并添加到 DOM。

到目前为止,一切都很好。

如果您想在几分钟后调用服务器以查看是否有新推文到达,该怎么办?如何将新到达的推文添加到集合中?

如果您使用fetch()方法,您始终访问同一个 URL。没关系。有没有一种聪明的方法可以使用 Backbone/Underscore 来过滤这些并将不在集合中的推文添加到集合中?


让我们假设您的每一条推文都有一个唯一的标识符(如果没有,您可能应该创建一个)。

您可以以这样的方式构建您的后端,默认情况下,如果您致电,它会为您提供 10 条最新的推文http://your.site.com/tweets http://your.site.com/tweets没有任何争论。

如果您致电http://your.site.com/tweets?last_tweet_id=BLAblaBlA http://your.site.com/tweets?last_tweet_id=BLAblaBlA,它将为您提供您指定的last_tweet_id 之后的 10 条最新推文。

您可以通过实现 YourCollection.sync 方法来覆盖从后端获取数据到 Collection 中的代码。

原因:Backbone.Collection首先尝试调用Collection.sync,如果它没有实现,它会调用Backbone.sync函数,所以如果你实现了YourCollection.sync,它将被使用。这是 Backbone.Collection.fetch 函数的片段:

(this.sync || Backbone.sync)('read', this, success, error);

所以你的同步会是这样的

var TweetCollection = Backbone.Collection.extend({
  model: TweetModel,
  sync: function(method, collection, success, error) {
    var requestData={};
    if(collection.length>0) {
        requestData.last_tweet_id=collection.last.id 
    }
    var params = {
        url:          "/tweet",
        type:         "POST",
        data:         requestData,
        success:      success,
        error:        error
    };
    $.ajax(params);
  }
}

您必须重写集合解析函数,以确保将响应附加到现有的模型数组中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Backbone.js 更新集合中的模型 的相关文章

随机推荐

  • 如何在自引用外键中使用现有查询引用所有子对象?

    我有一个代表所有者的模型 该模型自身有一个外键来表示父实体 还有另一种模型 称为具有所有者外键的资产 母公司外键的目的是模拟公司结构 以便母公司 拥有 外键为其自身或子公司的资产 Class Owner models Model paren
  • 实现自己的memcpy(大小以字节为单位?)

    我最近遇到一个面试问题 我必须实现 memcpy 根据我的经验 我已经使用过很多memcpy 所以这似乎不是一个棘手的问题 因此 我开始实现一个循环 一次从一个指针复制一个地址到另一个指针 如下所示 void memcpy void des
  • Android 11:如何/在哪里写入应在卸载后仍然存在的混合媒体文件

    我正在编写一个针对 Android 11 的特定用例相机应用程序 当我点击记录时 我想在某处创建一个新目录 名称基于时间戳等 其中包含生成的视频以及整个堆其他也在录制过程中写入的自定义 YAML JSON CSV 文件 逻辑上属于录制的 输
  • iPhone/iOS JSON解析教程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 作为一次学习经验 我想制作一个 iPhone 应用程序 该应用程序调用 Web 服务器 Web 服务 检索 JSON 响应 并使用该响应来
  • 在 Egit (Eclipse) 中更改用户位置(主变量)

    我使用 Eclipse Indigo 和 Windows 7 以及 Eclipse 插件 egit jgit 如何更改 egit 中的用户位置 我应该这样做 因为它包含特殊字符 它不理解 egit 我想要 C git home gitcon
  • 主要在命名空间中

    为什么这个不能编译 链接器找不到main 但是为什么会这样呢 namespace somenamespace int main void return 0 3 6 1 1 程序应包含一个名为 main 的全局函数 哪个 是指定的开始 程序
  • 如何在Ubuntu上使用gem安装Rails

    错误信息 Building native extensions This could take a while ERROR Error installing rails ERROR Failed to build gem native ex
  • intellij 构建包含 gradle 依赖项的 jar 工件

    我基本上想做一些简单的事情 或者至少我认为它应该非常简单 我的目标是创建一个 Intellij gradle 项目 使用 gradle 向模块添加一些依赖项 并向其中添加一些 java 源代码 然后我只想有一个选项以某种方式将整个东西编译成
  • 如何使用包database/sql批处理sql语句

    如何使用Go的database sql包批处理sql语句 在Java中我会这样做 Create a prepared statement String sql INSERT INTO my table VALUES PreparedStat
  • Dagger 和 libgdx

    可以使用 dagger 2 和 libgdx web 吗 libgdx 项目可以在 Android 和桌面上正常构建 当我添加一个网络模块并运行时 gradlew html superDev ERROR Line 1 The type ja
  • 您可以在不使用 API 的情况下获得 MailChimp 兴趣组 ID 吗?

    使用 MailChimp API 要将成员添加到具有特定兴趣组的列表 您需要该列表的 ID 和兴趣组的 ID 要获取这两个 ID 您可以查询 API 来获取它们 或者对于列表 ID 您可以在 MailChimp 接口输出的表单代码中找到它
  • JSTL中如何获取随机数?

    我想要得到类似于 JSTL 中生成的下一个代码的内容
  • 当无法访问服务器时,PHP 的 PDO 会忽略 MySQL 的 ATTR_TIMEOUT 选项

    我正在测试无法通过输入随机 IP 尝试连接来访问 mysql 服务器的场景 我将 PDO 的选项设置为在一秒后超时PDO ATTR TIMEOUT gt 1 然而 抛出异常仍然需要30秒 我猜这个超时仅适用于实际的 mysql 连接时间 而
  • HTML5 应用程序缓存相关吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Powershell 脚本查找并更改 Word 中的超链接,保存文档并创建 PDF 格式的新副本

    我试图弄清楚如何编写一个脚本来遍历一个文件夹并抓取该文件夹中的所有Word文档以搜索超链接并将链接更改为另一个链接 然后保存该 Word 文档并创建其另一个版本 将其转换为 pdf 如何调整下面的脚本以获取文件夹中的所有 Word 文档 然
  • ABRecordCopyValue() EXC_BAD_ACCESS 错误

    在我的应用程序中 我必须检索用户联系人的某些属性 例如 我需要检索联系人的名字 姓氏 中间名 昵称 组织 职位 部门 生日 电子邮件等 我有一些方法来检索这些属性 但只有几个方法可以工作 尽管它们都很相似 这是我的代码 其中一种方法有效 名
  • 将变量传递给 AngularJS 控制器,最佳实践?

    我是全新的AngularJS http angularjs org就像我到目前为止所看到的那样 尤其是模型 视图绑定 我想利用它来构建一个简单的 添加到购物篮 功能 到目前为止 这是我的控制器 function BasketControll
  • Google Apps 脚本从 Gmail 中提取数据并填写 Google 表格中的多个匹配行

    继续从Google Apps 脚本从 Gmail 中提取数据并填写 Google 表格中的匹配行 https stackoverflow com questions 69309206 google apps script to extrac
  • SQL 编号列 - MySQL

    这是一个sql新手问题 基本上 我想要一个额外的列与我的 select 语句一起返回来对行进行编号 我正在使用mysql Eg select from friends David Steve Joe 获取的语法是什么 1 David 2 S
  • Backbone.js 更新集合中的模型

    假设您正在使用 Backbone js 构建 Twitter 克隆 您有一组推文 每条推文显然都是推文模型的一个实例 您创建该集合的一个实例 获取最新的 10 条推文 渲染它们并添加到 DOM 到目前为止 一切都很好 如果您想在几分钟后调用