避免从主干视图重新渲染图像和其他内容

2024-04-18

当我重新渲染主干视图时,有什么好方法可以跳过重新渲染图像和谷歌地图等内容?每次重新渲染视图时,我的照片和地图视图都会闪烁得很厉害(这种情况很常见)。特别是对于图像,模板引擎从头开始布局布局,这会导致图像标记再次从服务器或从缓存中获取位图。

当然,我仍然希望视图保持与布局无关,因此从技术上讲,它不应该知道我们将要显示图像,对吧?


我将提供一个与你的假设相冲突的解决方案“视图应该与模板无关”.

如果你打电话render()每当模型发生任何变化时,您都会得到这个blinking在您的浏览器中,特别是如果template is big.

我的建议是分开render视图的视图仅在第一次可视化时发生一次,并且多次update辅助方法负责更新链接到具体模型属性的小部分视图。

例如:

// code simplified and not tested
var MyView = Backbone.View.extend({
  initialize: function(){
    this.model.on( "change:title", this.updateTitle, this );
    this.model.on( "change:description", this.updateDescription, this );
    // ... more change:XXX
  },

  render: function(){
    this.$el.html( this.template( this.model.toJSON() ) );
  },

  updateTitle: function(){
    this.$el.find( ".title" ).html( this.model.get( "title" ) );
  },

  updateDescription: function(){
    this.$el.find( ".description" ).html( this.model.get( "description" ) );
  },

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

避免从主干视图重新渲染图像和其他内容 的相关文章