加载多个视图的正确模式是什么?

时间:2016-04-15 20:03:33

标签: javascript backbone.js

我需要在加载页面时加载3个视图。

目前我这样做:

/**
 * BVComposite
 */

    var BVComposite = Backbone.View.extend({
        Name: 'BVComposite',
        render: function (token) {
            this.BVFave = new BVFave({  el: $A.el('#mm'),
                collection: new BCFave([], {data: {h_token: token, model: "FavoriteReader"}})
            });
            this.BVFeed = new BVFeed({el: $A.el('#at_view'),
                collection: new BCFeed([], {data: {h_token: token, model: "FeedReader"}})
            });
            this.BVAccount = new BVAccount({ model: new BMAccount([],
                {data: {h_token: token, model: "AccountReader"}})
            });
        }
    });

然后我这样称呼它(在页面加载时)

var composite_view = $A.Class.add(new BVComposite());
composite_view.render(token);

有没有更好的方法来做到这一点。也就是说,有这样的设计模式吗?

1 个答案:

答案 0 :(得分:0)

我将所有代码放入2015-01-08 函数中,然后让复合视图调用子项initialize

render

尝试仅在渲染函数中放置与DOM操作相关的代码。在初始化函数中,我会设置设置视图所需的任何逻辑,例如分配var BVComposite = Backbone.View.extend({ Name: 'BVComposite', initialize:function(){ this.BVFave = new BVFave({ el: $A.el('#mm'), collection: new BCFave([], {data: {h_token: token, model: "FavoriteReader"}}) }); this.BVFeed = new BVFeed({el: $A.el('#at_view'), collection: new BCFeed([], {data: {h_token: token, model: "FeedReader"}}) }); this.BVAccount = new BVAccount({ model: new BMAccount([], {data: {h_token: token, model: "AccountReader"}}) }); }, render: function (token) { this.BVFave.render(); this.BVFeed.render(); this.BVAccount.render(); } }); model,处理collection参数等。这样可以使您的意图更加清晰,轻松了解。