Javascript 通过父构造函数创建主干继承视图
我有两个主要观点:Javascript 通过父构造函数创建主干继承视图,javascript,inheritance,backbone.js,constructor,Javascript,Inheritance,Backbone.js,Constructor,我有两个主要观点: VideoView(扩展主干网视图) 扩展视频视图(扩展视频视图) 我在我的网站上有多种类型的视频,有些视频根据其数据属性有不同的行为(即数据有重叠,数据被扩展) 我想在VideoView上初始化它们,然后它将检查传递给它的元素,并在适当的情况下委托给子视图 问题: 是否有任何内置到Backbone.js中的东西可以帮助实现这一点 是否有一个优雅的解决方案,或者我是否应该更改初始创建代码以在DOM级别创建正确的视图(即,搜索具有特定数据属性的视频元素并相应实例化) 示
- VideoView(扩展主干网视图)
- 扩展视频视图(扩展视频视图)
数据
属性有不同的行为(即数据有重叠
,数据被扩展
)
我想在VideoView上初始化它们,然后它将检查传递给它的元素,并在适当的情况下委托给子视图
问题:
- 是否有任何内置到Backbone.js中的东西可以帮助实现这一点
- 是否有一个优雅的解决方案,或者我是否应该更改初始创建代码以在DOM级别创建正确的视图(即,搜索具有特定数据属性的视频元素并相应实例化)
var VideoView = Backbone.View.extends({
initialize: function ( options ) {
// something here to check the el and create ExpandedVideoView if appropriate
if ( this.$el.data('is-expanded') ) {
// Create ExpandedVideoView instead..?
}
},
foo: function () { return 'foo'; }
});
var ExpandedVideoView = VideoView.extends({
initialize: function () {},
bar: function () { return 'bar'; }
});
标记看起来如下所示:
<div class="Video" data-src="..." data-is-expanded data-has-controls>...</div>
<div class="Video" data-src="..." data-has-controls>...</div>
<div class="Video" data-src="..." data-is-expanded>...</div>
self.$el.find('.Video').each(function ( index, el ) {
self.videoViews.push( new VideoView({ el: el }) );
});
(其中,
self
是一个管理其子视图的父视图)Backbone.js中是否内置了任何东西来促进这一点?
简言之,没有。但是如果你想生成一个“列表视图”类型的视图,根据类型对其项目进行不同的格式设置,那么你可以查看主干网。木偶的集合视图,并从中获得一些灵感
木偶网的集合视图不支持即时呈现不同的子视图,但您可以重写基类中的方法来轻松实现这一点
如果您想要并且需要更复杂的视图结构,那么绝对值得一看