Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过父构造函数创建主干继承视图_Javascript_Inheritance_Backbone.js_Constructor - Fatal编程技术网

Javascript 通过父构造函数创建主干继承视图

Javascript 通过父构造函数创建主干继承视图,javascript,inheritance,backbone.js,constructor,Javascript,Inheritance,Backbone.js,Constructor,我有两个主要观点: VideoView(扩展主干网视图) 扩展视频视图(扩展视频视图) 我在我的网站上有多种类型的视频,有些视频根据其数据属性有不同的行为(即数据有重叠,数据被扩展) 我想在VideoView上初始化它们,然后它将检查传递给它的元素,并在适当的情况下委托给子视图 问题: 是否有任何内置到Backbone.js中的东西可以帮助实现这一点 是否有一个优雅的解决方案,或者我是否应该更改初始创建代码以在DOM级别创建正确的视图(即,搜索具有特定数据属性的视频元素并相应实例化) 示

我有两个主要观点:

  • VideoView(扩展主干网视图)
  • 扩展视频视图(扩展视频视图)
我在我的网站上有多种类型的视频,有些视频根据其
数据
属性有不同的行为(即
数据有重叠
数据被扩展

我想在VideoView上初始化它们,然后它将检查传递给它的元素,并在适当的情况下委托给子视图

问题:

  • 是否有任何内置到Backbone.js中的东西可以帮助实现这一点
  • 是否有一个优雅的解决方案,或者我是否应该更改初始创建代码以在DOM级别创建正确的视图(即,搜索具有特定数据属性的视频元素并相应实例化)
示例BB代码:

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中是否内置了任何东西来促进这一点?

简言之,没有。但是如果你想生成一个“列表视图”类型的视图,根据类型对其项目进行不同的格式设置,那么你可以查看主干网。木偶的集合视图,并从中获得一些灵感

木偶网的集合视图不支持即时呈现不同的子视图,但您可以重写基类中的方法来轻松实现这一点

如果您想要并且需要更复杂的视图结构,那么绝对值得一看