Backbone.js 在视图的多个实例上调用渲染的最佳方法是什么?

Backbone.js 在视图的多个实例上调用渲染的最佳方法是什么?,backbone.js,Backbone.js,我正在尝试对视图的多个实例调用render。然而,它们需要按顺序发生(不是真的)。这是我的视图代码,希望能解释它自己 var SiteView = Backbone.View.extend({ el: '#contentArea', render: function(siteId) { console.log("SiteView.render running",arguments); var that = this; var sit

我正在尝试对视图的多个实例调用render。然而,它们需要按顺序发生(不是真的)。这是我的视图代码,希望能解释它自己

var SiteView = Backbone.View.extend({
    el: '#contentArea',
    render: function(siteId) {
        console.log("SiteView.render running",arguments);
        var that = this;
        var siteCollection = new SiteCollection();
        this.collection = siteCollection;
        this.collection.fetch({
            data: {
                returnType: "VERTEX",
                startId: siteId,
            },
            success: function(model, response, options) {
                console.log("SiteView.render.success",arguments);
                var templateHtml = _.template(siteHtml, response);
                that.$el.empty();
                that.$el.html(templateHtml);
                that.renderServersList(response.ID);
                that.renderContainersList(response.ID);
            }
        });
    },
    renderServersList: function(siteId) {
        console.log("SiteView.getServersList running", arguments);
        var that = this; // Removed this line which seemed to be causing the issue :-/
        // This is a view in a separate file provided by require.js
        var serverListView = new VertexListView({el: "#siteServersListBody"});
        serverListView.render("SERVERS", siteId);
    },
    renderContainersList: function(siteId) {
        console.log("SiteView.getContainersList running", arguments);
        // This is a view in a separate file provided by require.js
        var contListView = new VertexListView({el: "#siteContainersListBody"});
        contListView.render("CONTAINERS", siteId);
    }
});
GetContainerList和getServersList都在工作,因为它正在获取正确的数据。但是,在呈现服务器列表时,它还包含整个容器列表,然后容器列表只包含它应该包含的内容


我之所以将这些请求分离出来,而不是在原始请求中包含容器和服务器,主要是因为容器的大小。它可能相当大。

如果您在没有特定于域的应用程序代码的情况下演示此问题,则回答起来会更容易。视图的多个实例在哪里?这个问题的标题给出了一个简单的答案(遍历视图数组;JS中的数组总是有固定的顺序),但是如果您已经有一段时间没有开始研究代码块,那么代码块不是最好的选择,就像你可能已经考虑过的。考虑管理我的第一个评论的原因,为什么当你有两个叫做“get”的函数不返回任何东西时,强迫人们尝试理解你的代码。这只是习惯,我的伙伴们也抱怨这一点。这些方法可能应该称为render。。。我将编辑代码,使其可读性更好一些。多个实例实际上是每个renderServersList和RenderContainerList函数的本地实例。我在每个视图中创建一个新的VertexListView。然而,当服务器列表被呈现时,它也包含我真的不理解的容器,因为它们是独立的对象。。。在再次进行此操作时,我注意到renderServersList中的“var that=this;”行。我在想,为什么会这样?所以我移除了它,现在它可以正常工作了。现在我完全不明白为什么会有不同。别误会我的意思,很高兴它能起作用,但那为什么会导致它不起作用呢?好的,伙计们,谢谢你们的回复。当然,我欢迎一个更好的方式,如果我在这方面完全错误,因为我是一个骨干新手:)。