渲染Backbone视图时,如何防止图像闪烁?

Jas*_*n D 6 javascript jquery backbone.js

我使用Backbone.js作为框架,在我看来,我有一些小图像(垃圾桶可以删除,图标等).当视图重新渲染这些图像时闪烁.

我通过为我不想闪现的所有内容创建一个新视图来解决这个问题,而不是触发它们渲染.但是我想知道是否还有另一种方法可以做到这一点而不会将我的观点分解成一堆碎片?

这是我呈现我的观点的一般格式:

window.SomeView = Backbone.View.extend({
    initialize: function() {                
        this.model.bind('change', this.render, this);
        this.template = _.template($('#view-template').html());
    },
    render: function(){
        var renderedContent = this.template(this.model.toJSON());
        $(this.el).html(renderedContent);
        return this;
    },
    events: { 'click .delete' : delete },
    delete: function(ev){
        //do delete stuff here
    },

});
Run Code Online (Sandbox Code Playgroud)

然后我将它们附加到div:

var newView = new PopupItemImgView({model: someModel});
        $('#styleimage').append(newView.render().el);
Run Code Online (Sandbox Code Playgroud)

我的模板可能看起来像

<script type="text/template" id="view-template">
<%
    print('Content content - <img src="images/delete.gif" class="delete">');
%>
</script>
Run Code Online (Sandbox Code Playgroud)

Wil*_*hin 1

您可以将事件绑定到函数,而不是将事件绑定到change您的方法。然后,在renderchangeonChangeonChange处理程序中,您可以准确地找出需要更新的内容,并保持其他所有内容不变。

当我为集合构建视图时,我使用了这种方法:我不希望在单个元素更改时重新呈现整个列表。相反,我在第一次插入元素时渲染一次,然后根据需要处理特定的更改事件。