与后端同步集合更改

2024-01-07

我使用 Backbone.js 并且有一组模型。该集合被检索并显示在前端。在前端,我希望用户删除新模型并将其添加到集合中。

当用户完成并单击“保存”时,我希望更新整个集合。这意味着当单击“保存”时,集合会同步(以某种方式)。添加的模型将被保存,删除的模型将被删除。

如果我通过删除和添加模型来操作集合,然后使用 ex:

this.collection.sync()

会删除和添加模型吗?


至少有两种方法可以实现这一目标。

创建 API 端点来管理模型

添加/更新模型时,直接保存模型.save http://backbonejs.org/#Model-save当模型被删除时,调用.destroy http://backbonejs.org/#Model-destroy on it.

该系列还有一个.create功能 http://backbonejs.org/#Collection-create它将新模型添加到其中并同时保存。

最好的事情是在一个请求中完成所有事情。

不总是。集合可能很大,而变化却很小,因此每次与服务器交换 100 个对象,而不是 X 个小的请求来添加、删除或更新列表中的模型。

Pros

  • 可重用端点管理单个模型
  • 光数据传输,比发送整个集合更快(仅通过部分更新发送更改)
  • 可能的自定义行为对于每个动作
  • Easy 实时更新执行

Cons

  • 进行大量更改时会提出更多请求
  • 需要模型有 id
  • 要管理的其他端点
  • 不适用于批量操作(一次保存所有模型)

把集合的models数组到模型中

收藏品并不是用来保存的。相反,将models将集合转换为与 API 端点通信的模型。该端点应该期望一个带有数组字段的对象,它可以用来替换服务器端的集合。

var CollectionModel = Backbone.Model.extend({
    urlRoot: "collection/endpoint/"
});

var myModel = new CollectionModel();

// ...sometime later...

myModel.save({
    arrayAttribute: yourCollection.toJSON()
}, { patch: true });

Pros

  • 一个端点;始终对 API 进行相同的调用
  • 易于实施;仅在发生保存的一个地方

Cons

  • 无论变化如何,所有模型都会根据每个请求进行传输
  • 如果集合很大,可能会很慢

收藏品.sync功能 https://github.com/jashkenas/backbone/blob/8ec88604732944f197b352a6be22c8216ea9d3a1/backbone.js#L796-L799只是一个代理Backbone.sync http://backbonejs.org/#Sync如果没有正确的参数,什么也不做。它仅在内部使用.fetch (1055号线 https://github.com/jashkenas/backbone/blob/8ec88604732944f197b352a6be22c8216ea9d3a1/backbone.js#L1055)并且不意味着直接使用,除非添加自定义行为。

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

与后端同步集合更改 的相关文章

  • 在 JavaScript 中使用 Array.map 删除元素

    我想使用以下方法过滤一系列项目map 功能 这是一个代码片段 var filteredItems items map function item if some condition return item 问题是过滤掉的项目仍然使用数组中的
  • javascript 可以从父页面访问 iframe 元素吗?

    我的页面上有 iframe iframe 和父页面位于不同的域中 父页面上的 javascript 代码可以访问此 iframe 内的元素吗 如果页面来自不同的域 则不应该这样做 浏览器安全沙箱应该阻止这种类型的访问 当两个页面来自不同的时
  • 如何在 js.erb 中使用 Ruby 代码?

    我可以使用以下方式在模态中渲染部分内容escape javascript在js erb文件代码中 body append my modal modal show 但是 我似乎无法获得以下结果 console log ERB 将输出一个纯字符
  • 使用 IE 11 和 AngularJS 的 2 路数据绑定问题

    我最近在使用 AngularJS 的 Web 应用程序上构建了一个功能 但在 IE 11 上遇到了一些问题 apply 将数据更改写入 DOM 由于某种原因 这种情况仅有时发生 而当我尝试调试问题时却从未发生 这使得它看起来像是一个计时问题
  • Javascript 字符串/整数比较

    我在 HTML 中存储一些客户端参数 然后需要将它们作为整数进行比较 不幸的是我遇到了一个我无法解释的严重错误 该错误似乎是我的 JS 将参数读取为字符串而不是整数 导致我的整数比较失败 我生成了一个错误的小例子 我也无法解释 运行时以下返
  • 如何使用 html 标签包装 window.getSelection().getRangeAt(0) 中的文本选择?

    如何从 window getSelection getRangeAt 0 中进行选择并用 HTML 标签 例如 span 或 mark 包围它 我更喜欢直接的 javascript 或 jQuery 解决方案 我可以使用警报输出选定的文本
  • 防止 Node.js 中的 SQL 注入

    是否有可能以与 PHP 具有防范 SQL 注入的预准备语句相同的方式防止 Node js 中的 SQL 注入 最好使用模块 如果是这样 怎么办 如果不 有哪些例子这可能会绕过我提供的代码 见下文 一些背景 我正在制作一个 Web 应用程序
  • 将新数据添加到 d3 Streamgraph 时的转换

    我使用d3绘制了一个与官方示例非常相似的流图http bl ocks org mbostock 4060954 http bl ocks org mbostock 4060954 唯一的区别是我如何用新数据更新它 我不仅想要垂直 y 值 过
  • 如何在 Chrome 中将 Set 转换为数组?

    如何将集合转换为数组 https stackoverflow com questions 20069828 how to convert set to array给出了将 Set 转换为 Array 的三个答案 目前在 Chrome 浏览器
  • ECMAScript 中定义的内部属性是什么?

    什么是内部属性 http es5 github com x8 6在 ECMAScript 中定义为 规格是什么意思 该规范使用各种内部属性来定义 对象值的语义 这些内部属性不是 ECMAScript 语言 它们是由本规范定义的 纯粹用于说明
  • 在 json 对象中执行 javascript 代码?

    有远吗 所以像这样 key1 val1 key2 val2 some code document getElementById someid innerHTML test 那么 some code 会在没有任何用户干预的情况下执行吗 No
  • Angular 4 - 具有动态参数值的自定义验证器

    我编写了一个自定义验证器 用于检查日期是否高于某个最小日期 代码如下所示 export function validateMinDate min Date ValidatorFn return c AbstractControl gt if
  • 如何在 Google 地图上旋转叠加图像?

    我正在尝试将一系列叠加层放置到 Google 地图上 我正在跟随地面覆盖层的示例代码 https developers google com maps documentation javascript examples groundover
  • 在 Javascript 中实现 Zobrist 哈希

    我需要在 Javascript 中为国际象棋引擎实现 Zobrist 哈希 我想知道实现此目的的最佳方法是什么 现在 我不是计算机科学家 也从未上过正式的算法和数据结构课程 所以如果我在这方面有点偏离 我很抱歉 据我了解 我需要一个 64
  • 重复 Pinterest Facebook 邀请功能

    I m trying to duplicate Pinterest s Invite Friends functionality In case you haven t seen what it looks like it looks li
  • 抓取 Shopee API v4

    我有一个最终项目 其中我想要检索的数据是通过在shopee上抓取数据来获取的 但是当我在隐藏的API上抓取shopee时遇到问题 当我在Insomnia脚本上尝试时 脚本会运行 但是当我尝试时在本地或 google colab 脚本上 这是
  • 为什么我的数据没有存储到我的 Firebase 实时数据库中?

    我正在尝试为网络应用程序制作一个注册页面 这会将数据发送到 firebase 数据库 我已阅读官方 firebase 文档并按照说明写入数据 但什么也不会写 在我的数据库控制台中 它显示的所有内容都是空 而不是我的数据 我没有收到控制台错误
  • HTML 画布从 getImageData 返回“偏离一些”字节

    我找到getImageDataHTML 画布似乎返回不正确的字节值 我使用以下 Python 代码生成了 1x1 px 图像 from PIL import Image import numpy as np a np array 12 18
  • Promise链基本问题

    我正在尝试理解 Promise 我创建了一些有效的承诺链 而另一些则无效 我已经取得了进步 但显然缺乏基本概念 例如 以下承诺链不起作用 这是一个愚蠢的例子 但说明了问题 我正在尝试在链中使用 Node 的函数 randomBytes 两次
  • 如何从索引文件迭代多个导入的模块

    我有一个名为Polygons我在那里创建了一个index jsfile 以导出目录中的所有文件 它看起来像这样 export default as europe from europe export default as northAmer

随机推荐

  • Python PyEphem 计算方位角和高度

    我是 PyEphem 的新手 我正在尝试弄清楚它可以做什么以及它是如何工作的 由于我不想将其用作黑匣子并盲目相信我得到的任何数字 因此我想重新创建一个解释的示例here http www stargazing net kepler alta
  • 停止读取 Python 中的进程输出而不挂起?

    我有一个适用于 Linux 的 Python 程序 几乎看起来像这样 import os import time process os popen top readlines time sleep 1 os popen killall to
  • 使用 PagedList 和成员资格

    我一直在玩 Troy Goode 的 PagedListhttp pagedlist codeplex com http pagedlist codeplex com 我想知道是否有人已经让它与内置的 asp net 会员部分一起工作 我有
  • 将焦点设置在 xaml wpf 中的文本框上

    尽管这个论坛和其他论坛上有一些帖子 但我找不到一些东西来告诉我如何将焦点放在TextBox 我有一个带有许多标签和文本框的用户控件 加载表单时 我希望特定的文本框具有焦点 我已经设置了 tabIndex 但这似乎不起作用 有什么建议么 您可
  • Symfony 2 中的中间路由可选参数

    需要解决的问题 在 Symfony 2 中是否可以用 定义路由中间的 可选参数 我将使用其他问题数据 https stackoverflow com questions 17059843 routing in symfony2 option
  • ASP.NET MVC:动作过滤器设置控制器变量?

    我有一个场景 对于每个页面请求 我都必须检查会话是否存在特定 ID 如果发现这一点 我必须从数据库中获取相关对象并将其提供给控制器 如果找不到会话 ID 我需要重定向用户 会话已过期 目前 我有一个自定义代码块 几行 它在控制器内的每个操作
  • 防止在插件中创建

    我在服务活动的预创建上注册了一个插件 在插件中 我检查一些条件 如果满足这些条件 我想停止创建服务活动 我想创建另外两个服务活动来代替该服务活动 但我不希望用户收到这一切的通知 有没有办法停止在 CRM 2011 上的插件中创建 SA 记录
  • 如何将 UUID 转换为 base64?

    我想打字UUID并将其输出到Base64编码格式 但是考虑到输入方法Base64并输出UUID如何实现这一点似乎并不明显 update虽然对于我的用例来说不是明确的要求 但最好知道所使用的方法是否使用 UUID 的原始 UUID UUID
  • 使用相同的 docker 映像部署多个 Cloud Run 服务

    有超过 25 个 Cloudrun 服务使用相同的 docker 镜像 来自 GCR 但配置了不同的变量 有什么简单可靠的方法可以使用来自任何类型传入事件的最新容器映像来部署所有服务 目前使用下面的CLI命令来手动执行一一执行 有没有一种自
  • java子类的私有final字段可以在超级构造函数完成之前初始化吗?

    我有一对像这样的课程 public abstract class Class1 public Class1 function2 protected abstract void function2 public class Class2 im
  • mkstemp 的 java 等效项

    Java中有什么方法可以安全地写入临时文件吗 据我所知 创建临时文件 createTempFile 的唯一方法实际上并不同时打开它 因此文件打开和文件写入之间存在竞争条件 我错过了什么吗 我在 UnixFileSystem java 中找不
  • Vaadin 中当前 UI 的访问方法

    我目前正在 Vaadin 开发 Java Web 应用程序 我想从另一个类访问位于我的 LoginUI 中的 getter 方法 UI getCurrent 成功返回当前线程 LoginUI 我需要调用哪些方法来实现此目的 先感谢您 UI
  • 错误:写入失败、打开流失败、pecl 在 mac osx el Capitan 上安装 oauth

    我正在尝试使用 pecl install 在本地安装 OAuth 版本 1 2 3 在 Mac OSX El Capitan 上运行 PHP 5 6 10 在命令提示符中运行以下命令 sudo pecl install oauth 1 2
  • 如何检测 Racket Web 应用程序上的按键?

    我已经浏览了网络服务器的文档 但找不到任何内容 这是我的基本 Web 应用程序的代码 lang racket require web server servlet web server servlet env define test def
  • Mysql - 可视化 Web 开发人员 - 实体框架

    我遇到以下问题 我有 Visual Web Developer 2010 Express 我正在尝试让它与实体框架和 MySQL 数据库一起使用 我安装了 NET Connector for MySql 但它似乎没有与 Web Develo
  • 页面内容显示在侧边栏下方

    我正在创建一个带有侧边栏的 html 布局 但我的标题和内容出现了下我的侧边栏而不是旁边的 container position relative padding 10px top 0px right 0 left 0 height 120
  • 如何使用依赖于变量的模式执行 Javascript 匹配?

    目前的实施Remy Sharp 的 jQuery 标签建议插件 http remysharp com 2007 12 28 jquery tag suggestion 只检查标签开头的匹配项 例如 输入 Photoshop 将不会返回名为
  • CocoaAsyncSocket 的读写委托不触发&代码组织

    我正在尝试使用 cocoaasyncsocket 库附带的 echo 服务器示例的修改版本执行以下操作 1 打开与充当服务器的 python 脚本的连接2 发送数据 有效 但委托不触发3 接收返回数据 委托不会触发4 断开连接 没有断开连接
  • .NET 4 上的 WCF 流式文件传输

    我需要一个关于 WCF 流式文件传输的好例子 我找到了几个并尝试了它们 但是这些帖子很旧 而且我正在 net 4 和 IIS 7 上工作 所以存在一些问题 你能给我一个很好的 最新的例子吗 以下答案详细介绍了使用一些技术将二进制数据发布到静
  • 与后端同步集合更改

    我使用 Backbone js 并且有一组模型 该集合被检索并显示在前端 在前端 我希望用户删除新模型并将其添加到集合中 当用户完成并单击 保存 时 我希望更新整个集合 这意味着当单击 保存 时 集合会同步 以某种方式 添加的模型将被保存