当前位置: 首页 > 面试题库 >

“如何”将整个集合保存在Backbone.js-Backbone.sync或jQuery.ajax中?

韦星文
2023-03-14
问题内容

我很清楚这是可以做到的,并且我已经研究了很多地方(包括:保存整个收藏集的最佳实践?)。但是我仍然不清楚它到底是用代码编写的吗?(该帖子以英语进行了解释。最好有一个javascript特定的解释:)

假设我有一个模型集合-
模型本身可能具有嵌套集合。我已经重写了父集合的toJSON()方法,并且得到了一个有效的JSON对象。我希望“保存”整个集合(对应的JSON),但是主干似乎并没有内置该功能

var MyCollection = Backbone.Collection.extend({
model:MyModel,

//something to save?
save: function() {
   //what to write here?
 }

});

我知道你必须在某个地方说:

Backbone.sync = function(method, model, options){
/*
 * What goes in here?? If at all anything needs to be done?
 * Where to declare this in the program? And how is it called?
 */
}

一旦“视图”完成处理,它便负责告诉集合将自身“保存”在服务器上(能够处理批量更新/创建请求)。

出现的问题:

  1. 如何/以何种方式编写代码以“将所有内容连接在一起”?
  2. 回调的“正确”位置是什么?如何指定“成功/错误”回调?我的意思是语法吗?我不清楚在主干中注册回调的语法…

如果确实是一项棘手的工作,那么我们可以在视图中调用jQuery.ajax并通过this.successMethodthis.errorMethod作为成功/错误回调吗?能行吗

我需要与主干的思维方式保持同步-我知道我肯定缺少某些东西,可以同步整个收藏。


问题答案:

我立即想到的是不覆盖Backbone.Collection上save方法的方法,而是将集合包装在另一个Backbone.Model中并在其上覆盖toJSON方法。然后,Backbone.js会将模型视为单一资源,而您不必破解Backone认为过多的方式。

请注意,Backbone.Collection具有toJSON方法,因此您的大部分工作都已为您完成。您只需将包装器Backbone.Model的toJSON方法代理到Backbone.collection。

var MyCollectionWrapper = Backbone.Model.extend({
url: "/bulkupload",

//something to save?
toJSON: function() {
    return this.model.toJSON(); // where model is the collection class YOU defined above
 }

});


 类似资料:
  • 目前,我有一个节点应用程序,它使用mongoose将对象保存到MongoDB中。我使用的是类似于这样的模型: 它将我的对象保存到名为Registrations的集合中。 我将我的注册保存为: 我还希望在创建该对象时将其保存到另一个具有不同名称的集合中,如registrations_new或类似的内容。我想将此条目复制到新集合中。我尝试在连接字符串中添加另一个集合,这完全破坏了mongo部分,我尝试

  • 问题内容: 我有一个REST Json API,它返回一个列表“ logbooks”。有许多实现不同但相似行为的日志。在数据库层的服务器端实现是一种单表继承,因此日志的每个JSON表示都包含其“类型”: 我想在客户端复制此服务器模型,所以我有一个基类和多个日志子类: 我的是一组用于查询JSON API的模型: 当我获取日志集合时,是否有一种方法可以将每个对象转换为其对应的子类(基于JSON“ ty

  • 我有一个集合,每个用户都有自己的文档。现在,我想创建一个子集合来存储与特定用户相关的更多数据。 到目前为止,我的代码如下所示: 如何将数据存储在子集合中? 编辑我创建了一个新的保存函数,但firestore创建了一个名为“uid”的新文档,而不是使用当前uid将数据存储在文档的子集合中。如何解决这个问题?

  • 本文向大家介绍Backbone.js中的集合详解,包括了Backbone.js中的集合详解的使用技巧和注意事项,需要的朋友参考一下 Backbone.js的集合只是一个简单的有序集的模型。通过适应模型和集合,我们可以避免数据处理逻辑放到了我们的视图层。此外,模型和集合还提供了便利的与后端一起工作的方法,当数据发生变化时,可以自动化地标记Backbone.js视图。这样,它可以用于如下的情况: 通常

  • 问题内容: 我有2个模型和1个收藏集。是一个模型,是项目的集合,然后我有一个模型,其中包含: 当我调用该对象时,它得到了所有东西…除了当我在集合中移动时,它们都是类型而不是类型。 我认为这是有道理的,因为除了对象之外,它不知道the 的类型应该是。我可以遍历每个项目并将其转换为对象,但是我希望有一种无需手动进行操作的方法。 这是我的测试代码(在这里使用jsfiddle): 更新:我想到我可以覆盖解

  • 问题内容: 我正在尝试Backbone.js,而我正在尝试的事情之一就是调用远程API,因此,据我了解的文档资料,我需要能够覆盖Backbone.sync 。 在文档本身中没有如何执行此操作的示例,并且似乎没有用于Backbone的google组…有人可以指出执行此操作的示例吗? 问题答案: 看看这个带注释的源示例,在该示例中,它们被本地存储替代项覆盖 基本上,Backbone.sync应该是一个