我需要在加载页面时加载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);
有没有更好的方法来做到这一点。也就是说,有这样的设计模式吗?
答案 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
参数等。这样可以使您的意图更加清晰,轻松了解。