javascript – Backbone(Marionette也是如此)试图在集合的开头显示一条新记录,而无需重新渲染整个集合

我正试图在集合的开头呈现一个项目(想象一下,如果你在facebook上发布一条新记录)

当我来添加(响应,{at:0});在集合中,记录正确地在0处插入到集合中,但是在项目列表的底部呈现.我很困惑,因为我之前有这个工作,但我认为我在hacky风格做的事情,只是重置和重新渲染集合.

我想知道处理这个问题的方法是什么,我应该在哪里绑定逻辑.

它是在集合的add方法上吗?目前这是空的(但我使用的是Marionette),我觉得这会覆盖骨干的认渲染.如何再次控制它,这样我才能正确地将我的新项目添加到列表中,而不会破坏它并重新创建它.

解决方法

在Marionette中,将新项添加到视图中的集合的方法是使用jQuery的append方法. CollectionView类型有一个名为append Html方法,用于执行实际的追加. (见 http://derickbailey.github.com/backbone.marionette/docs/backbone.marionette.html#section-24)

但是,您可以在特定的集合视图中轻松覆盖此方法,并在需要的任何位置附加新模型.

在您的情况下,如果您始终希望将新模型添加到列表顶部,则更改集合视图以执行此操作非常简单:

Backbone.Marionette.CollectionView.extend({
  appendHtml: function(cv,iv){
    cv.$el.prepend(iv.el);
  }
});

请注意,cv是集合视图实例,iv是集合中模型的项目视图实例.

如果你需要做更复杂的事情,比如在现有的HTML节点集合中找到确切的位置,你也可以在appendHtml函数中做到这一点.当然,这比仅仅做一个前置而不是附加更复杂,但它仍然是可能的.

希望有所帮助.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...