避免从主干视图中重新渲染图像和其他内容
Avoid re-rendering images and other stuff from backbone views
当我重新渲染主干视图时,跳过重新渲染图像和谷歌地图等内容的好方法是什么?每次重新渲染视图时,我的照片和地图视图往往会闪烁得非常糟糕(这种情况很常见)。特别是对于图像,模板引擎从头开始布局,这会导致图像标签再次从服务器或缓存中获取位图。
当然,我仍然希望视图与布局无关,所以从技术上讲,它不应该知道我们将要显示图像,对吧?
我将提供一个与您的假设"视图应该与模板无关"相冲突的解决方案。
如果您在模型中有任何更改时调用render()
,您将在浏览器中闪烁,尤其是在模板很大的情况下。
我的建议是将视图的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()
})
为了获得最佳结果,您真的不想重新呈现包含媒体的 HTML,因此我建议对更改的内容使用更有针对性的视图,这样您就不需要使用不包含的内容重新呈现视图。
相关文章:
- 在通过child.print()打印之前,我如何等待图像加载到我的新窗口中
- 防止在AngularJs中渲染图像
- Three.js,WebGL,渲染六幅图像的全景图
- 如果我使用 src 而不是 ng-src,角度如何仍然渲染图像
- 未正确渲染图像宽度
- 如何从地图导出图像并将其插入到新的PDF文件中
- HTML5拖放新图像并替换Div中的现有图像
- 是否可以创建一个画布来提取图像数据,而无需实际渲染画布
- 在Android浏览器中将图像渲染为数据流
- 如何强制对模态进行新渲染
- 如何在 javascript 替换新图像/标题后正确显示 css 工具提示
- 高图表图像渲染器自动高度
- 打开新窗口进行打印时不显示 JavaScript 图像
- 在流星星系的网络拍摄pdf中渲染图像
- 如何在图像上渲染heatmap.js
- HTMLUnit是否包括一个功能性的[HTML5]画布2D实现,能够将图像数据渲染回Java代码
- html2canvas图像未渲染
- 一个指令,在图像完全渲染后返回一个promise
- 从导入的图标列表图像更改渲染的图标大小
- 关注标签触发模糊事件后新渲染的文本输入