TECHTOGOU

javascript - Backbone.js:包含多个具有相同 ID 的模型的集合

coder 2024-05-16 原文

我在 Backbone 中有一个合并的集合,其中包含照片和相册。

为了区分它们,我添加了一个字段type,它是photoalbum。当我填充集合时,我在 Collection#model 方法中创建了不同的模型

  model: (attrs, options) ->
    switch attrs.type
      when 'album' then new App.Models.Album(attrs, options)
      when 'photo' then new App.Models.Photo(attrs, options)

现在我发现了一个奇怪的错误,即添加具有相同 ID(假设 2)的照片和相册会导致合并。

我已经追踪到 these源代码中的 LOC。如果不创建 Backbone 本身的分支,它似乎是不可撤销的。我试过了,但它也是fails 35 tests .

我想到了 4 种不同的方法,我不知道哪种更好:

  1. 我可以为 ID 添加前缀。比方说 photo_2。这会导致后端发生变化,前端也会发生一些变化,以免在 /photos/photo_2
  2. 处访问服务器
  3. 我可以 fork Backbone 和 change these本地地址。
  4. 我可以创建两个单独的集合,但必须在 View 中处理合并和排序(这会影响客户端性能并需要重写后端)
  5. 我可以从照片 ID 开始,比方说 1000000。这将极大地降低已上传具有给定 ID 的照片的给定用户也创建具有相同 ID 的相册的可能性。

最佳答案

从 1.2 版开始,您可以使用 Collection.modelId指定您的集合将如何唯一标识模型。对于您的情况,您可以执行以下操作以确保您的类型具有不同的 ID。

  var MyCollection = Backbone.Collection.extend({
    modelId: function (attrs) {
      return attrs.type + "-" + attrs.id;
    }
    // ...
  })

关于javascript - Backbone.js:包含多个具有相同 ID 的模型的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16902440/

有关javascript - Backbone.js:包含多个具有相同 ID 的模型的集合的更多相关文章

  1. c# - 动态添加多个按钮到 wpf 窗口? - 2

    我如何在C#中向一个窗口添加多个按钮?这是我需要做的...我从字典中获取多个用户值(在合理范围内,只有@5-6个值)。对于每个值,我需要创建一个按钮。现在,我如何命名按钮,而不是按钮内的文本?我如何为每个按钮定义“点击”方法(它们都不同)?如果我不再需要该按钮,该如何删除该按钮? 最佳答案 我会封装整个东西,通常命名按钮应该没有意义。像这样:publicclassSomeDataModel{publicstringContent{get;}publicICommandCommand{get;}publicSomeDataModel(

  2. c# - IF Statement 多个条件,同一条语句 - 2

    大家好,希望减少我的c#if语句中的代码,因为有几个重复因素,并且想知道是否可以使用trimmer解决方案。我目前有2个if语句需要执行相同的语句,但是唯一的变量是在未选中复选框时if语句的额外条件。我只是想知道是否有办法让它成为一条语句或使条件字符串成为变量,这里是代码的压缩版本:if(checkbox.checked){if(columnname!=a&&columnname!=b&&columnname!=c){"statement1"}}else{if(columnname!=a&&columnname!=b&am

  3. c# - 字符串包含另外两个字符串 - 2

    如果字符串包含2个或更多单词,是否可以让contain函数查找?这就是我想要做的:stringd="Youhitsomeonefor50damage";stringa="damage";stringb="someone";stringc="you";if(d.Contains(b+a)){Console.WriteLine(""+d);Console.ReadLine();}当我运行它时,控制台窗口很快关闭而没有显示任何内容。还有另一个问题:如果我想加上造成的损害程度,获取该数字并将其输入TryParse的

  4. c# - 从一个方法返回多个结果 - 2

    这个问题在这里已经有了答案:Returnmultiplevaluestoamethodcaller(28个答案)关闭2年前。我尝试使用TryCatchblock和更好的错误处理来提高我的技能。我有一个执行常见任务的类,在本例中是检索FacebookAccessToken。如果成功,我想返回AccessToken字符串,如果失败我想返回一条错误消息。这些都是字符串,所以没问题。但是在代码的调用端检查返回值时,如何才能有效地做到这一点呢?这就像我需要返回2个值。如果尝试成功,则return=true,"ACESSCODEACXDJGKEIDJ",如果失败,则return=false,"Oo

  5. c# - 高效、不可变、可扩展的 .NET 集合 - 2

    这个问题在这里已经有了答案:Immutablecollections?(10个答案)关闭9年前。在我看来,.NET极度缺乏安全、不可变的集合类型,尤其是BCL,但我也没有看到其他方面做过多少工作。是否有人对.NET的(最好)生产质量、快速、不可变的集合库有任何指示。快速列表类型是必不可少的。我还没有准备好切换到F#。*编辑:搜索者请注意,这很快就会被纳入BCL:.NETimmutablecollections

  6. c# - 传递两个模型查看 - 2

    这个问题在这里已经有了答案:ASP.NETMVC-Viewwithmultiplemodels(4个答案)关闭8年前。我是mvc的新手,尝试通过用它做一个小项目来学习它。我有一个页面应该显示特定日期的货币和天气。所以我应该通过货币模型和天气模型。我已经通过货币模型并且工作正常但我不知道如何通过第二个模型。并且大多数教程都展示了如何只传递一个模型。你们能告诉我怎么做吗?这是我当前发送货币模型的ControllerActionpublicActionResultIndex(intyear,intmonth,intday){varmodel=fromrin_db.Currencieswher

  7. c# - out 用于多个输出值或返回组合值类型更好吗? - 2

    例如,按照以下行:publicboolIntersect(Rayray,outfloatdistance,outVector3normal){}对比publicIntersectResultIntersect(Rayray){}publicclassIntersectResult{publicboolIntersects{get;set;}publicfloatDistance{get;set;}publicVector3Normal{get;set;}}哪个在清晰度、易用性和最重要的性能方面更好。 最佳答案 我会使用组合类型,我会

  8. c# - 为枚举元素分配多个值 - 2

    嗨,我目前有这个枚举[Serializable]publicenumCountry{US=1,Canada=2,}当我通常从数据库中获取整数时,我会使用将其转换为枚举(Country)Convert.ToInt32("1")我现在在美国和加拿大有2个子区域,美国1和2,加拿大3和4。所以当我这样做的时候(Country)Convert.ToInt32("1")或(Country)Convert.ToInt32("2")我应该让枚举成为美国。以及3和4加拿大。我该如何实现?[Serializable]publicenumCountry{US=1,2Canada=3,4}是

  9. c# - CompositeCollection + CollectionContainer : Bind CollectionContainer. 集合到用作 DataTemplates DataType 的 ViewModel 的属性 - 2

    我没有获得正确的绑定(bind)语法来访问DateTemplate中MyViewModel的Cats和Dogs属性>在其资源中定义了一个CompositeCollection。publicclassMyViewModel{publicObservableCollection<Cat>Cats{get;privateset;}publicObservableCollection<Dog>Dogs{get;privateset;}}<DataTemplateDataType={x:Typelocal:MyViewModel}"><DataT

  10. c# - 序列化同一个类中的多个 DateTime 属性,每个属性使用不同的格式 - 2

    我有一个具有两个DateTime属性的类。我需要用不同的格式序列化每个属性。我该怎么做?我试过:JsonConvert.SerializeObject(obj,Formatting.None,newIsoDateTimeConverter{DateTimeFormat="MM.dd.yyyy"});此解决方案对我不起作用,因为它将日期格式应用于所有属性。有没有办法用不同的格式序列化每个DateTime属性?也许有一些属性? 最佳答案 处理这种情况的一种直接方法是将IsoDateTimeConverter子类化,为您需

随机推荐

  1. c# - 如何在 C# 中将任何数字类型与零进行比较 - 2

    我想创建一个函数来检查作为参数传递的数值是否具有大于零的值。像这样:publicboolIsGreaterThanZero(objectvalue){if(valueisint){return((int)value>0);}elseif(valueisfloat){//Similarcodeforfloat}returnfalse;}我能否尝试将作为函数参数传递的对象强制转换为一种数字数据类型,这样我就可以将它与零进行比较,而不是检查我的if语句中的每种类型?如果转换失败,我将返回false。有没有更好的(阅读更短、更易读)的方法来做到这一点?编辑:有人问我是否知道类型将是数字,

  2. c# - 委托(delegate) : Method name expected error - 2

    我正在尝试让以下简单的委托(delegate)示例正常工作。根据我从中获取的一本书应该没问题,但我得到了一个Methodnameexpected错误。namespaceTestConsoleApp{classProgram{privatedelegatestringD();staticvoidMain(string[]args){intx=1;Dcode=newD(x.ToString());}}}有什么帮助吗? 最佳答案 删除():Dcode=newD(x.ToString);您想指定方法,而不是执行。

  3. c# - 使用 Enumerable.OfType<T>() 或 LINQ 查找特定类型的所有子控件 - 2

    存在MyControl1.Controls.OfType<RadioButton>()仅通过初始集合搜索,不进入child。是否可以使用Enumerable.OfType<T>()找到特定类型的所有子控件?或LINQ不写自己的递归方法?喜欢this. 最佳答案 我使用扩展方法来展平控制层次结构,然后应用过滤器,所以这是使用自己的递归方法。方法是这样的publicstaticIEnumerable<Control>FlattenChildren(thisControlcontrol){varchil

  4. c# - for(;;) 在 C# 中是什么意思 - 2

    我看到下面的代码for(;;){//body...}这是什么意思? 最佳答案 这是一个没有起始值和条件的循环,所以会一直循环下去,类似于while(true){//body...}您需要使用break;语句来跳出循环。 关于c#-for(;;)在C#中是什么意思,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2035497/

  5. c# - C# 平台是中立的吗? - 2

    今天我购买了C#3.0PocketReference(O'ReillyPublishers)。在那本书第一页的第一段中给出了“C#语言是平台中立,但它是为与Microsoft.Net平台良好协作而编写的"如果我没记错的话,PlatformNeutral意味着用该语言制作的软件应该可以在所有操作系统(例如Mac、Windows、Linux等)上运行。我知道Java正在满足这个特性,但是.Net还没有做到这一点(虽然MONO在Linux上取得了一些进展)。那么到目前为止,"PLATFORMNEUTRAL"这个词的意义是什么?提前致谢 最佳答案

  6. c# - TimeSpan.Parse 时间格式 hhmmss - 2

    在c#中,我有hhmmss格式的时间,例如12:45:10的124510,我需要知道TotalSeconds。我使用了TimeSpan.Parse("12:45:10").ToTalSeconds但它不采用hhmmss格式。有什么好的方法可以转换它吗? 最佳答案 这可能有帮助usingSystem;usingSystem.Globalization;namespaceConsoleApplication7{classProgram{staticvoidMain(string[]args){DateTimed=DateTime.Par

  7. c# - 刷新 ModelState 以消除错误 - 2

    刷新模型状态您好,我有一个关于ASP.NETMVCController中的ModelState的问题。当用户从View中选择某个选项时,“认证”的开始日期和结束日期将根据输入的其他日期设置。问题是认证日期返回为null,而我们的CertificationMetaData类将字段指定为[Required],因此一旦加载操作,ModelState就会无效。手动删除ModelSate错误可以让这个工作,但我想知道是否有更好的方法来做到这一点?有没有办法刷新ModelState?我应该让字段不需要吗?还是应该使用javascript从View中添加日期值?publicActionResultC

  8. c# - 您如何用初学者语言描述观察者模式? - 2

    目前,我对观察者模式的理解程度低于网上所有的编码示例。我将其简单地理解为几乎是一个订阅,当委托(delegate)注册发生更改时,它会更新所有其他事件。但是,我对好处和用途的真正理解非常不稳定。我做了一些谷歌搜索,但大多数都超出了我的理解水平。我正在尝试用我当前的家庭作业来实现这个模式,要真正让我的项目有意义,需要更好地理解这个模式本身,或许还需要一个例子来了解它的用途。我不想将这种模式强加到只是为了提交的东西中,我需要了解目的并相应地开发我的方法,以便它真正达到一个好的目的。我的文字并没有真正进入它,只是一句话提到它。MSDN对我来说很难理解,因为我是这方面的初学者,而且它似乎更像是

  9. c# - 用于嵌入 C#/.NET 应用程序的脚本语言? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。[onlysimilarquestion我可以找到很久以前的答案,其中主要包含对IronPython的引用。我也想考虑其他选择]我们有一个用C#编写的复杂数据分析应用程序。该应用程序应该为用户提供一种复杂的方法来定制他们的数据分析任务。目前,我们混合使用配置文件和Excel表格来指定它,但它变得笨拙,所以我们正在寻找一种脚本语言来嵌入。用于C#/.NET嵌

  10. c# - 在 C# 中使用 SSE 是可能的吗? - 2

    我正在阅读有关c#代码优化的问题,一种解决方案是将c++与SSE结合使用。是否可以直接从C#程序执行SSE? 最佳答案 即将到来Mono2.2版本将支持SIMD。MigueldeIcaza在博客中介绍了即将推出的功能here,API是here.虽然会有一个库支持在Microsoft的.NETWindows运行时下进行开发,但除非您在Mono运行时下运行代码,否则它不会具有您正在寻找的性能优势。根据您的情况,这可能是可行的。更新:Mono2.2是released 关于c#-在C#中使用SS