Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 这个主干视图是如何获得它的';s EL属性集?_Javascript_Jquery_Backbone.js - Fatal编程技术网

Javascript 这个主干视图是如何获得它的';s EL属性集?

Javascript 这个主干视图是如何获得它的';s EL属性集?,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我正在看这个主干应用程序: 并试图了解它是如何工作的。我在main.js文件中看到,他这样调用WineView: wineList.fetch({success: function(){ $("#content").html(new WineListView({model: wineList, page: p}).el); 关于这一点,我有几个问题: 1) 为什么要调用$(“#content”)。。。。从这里开始?创建视图对象不是为了让新对象“呈现”方法处理HTML注

我正在看这个主干应用程序:

并试图了解它是如何工作的。我在main.js文件中看到,他这样调用WineView:

wineList.fetch({success: function(){
            $("#content").html(new WineListView({model: wineList, page: p}).el);
关于这一点,我有几个问题:

1) 为什么要调用$(“#content”)。。。。从这里开始?创建视图对象不是为了让新对象“呈现”方法处理HTML注入吗?事实上,他的Wine视图对象确实有一个render方法(这里是:/public/js/views/winelist.js),那么这里的调用有什么好处呢

2) 为什么要在末尾添加EL属性?我认为EL只是视图“附加”到的单个标记。如果它只是一个标签,那么它如何生成他所寻找的所有新HTML

3) 首先,EL标记是如何在新视图对象中设置的?我想如果你没有明确地声明它,那么EL默认为一个空DIV,我看不到EL在他的代码中为这个视图定义了什么

希望有人能澄清这一点

EL标签一开始是如何设置的

当您未指定主干代码时,主干代码本身会创建
el
。正如你所说的那样:

此.el是从视图的标记名、类名、id和属性(如果指定)创建的。如果不是,el是一个空div

请注意,如果以这种方式创建
el
,那么它将不会附加到DOM。因此,上面的代码必须获取
el
属性(视图的根标记),并将其附加到“#content”下的DOM

调用创建视图对象以让新对象“呈现”方法处理HTML注入不是重点之一吗


严格地说,可能是这样,但不一定。Backbone.js不知道如何构造应用程序,并且对其模型/视图没有严格要求。在主干应用程序中,您会看到很多类似的方法。

但我认为调用Jquery的$.html()方法是将文本注入DOM。您似乎在说,这里的目的是将#content标记附加到视图的EL属性。关于这一点似乎有些倒退。不?调用Jquery的html()方法如何将DOM标记分配给视图对象的EL属性?@user1813867不,你是对的,
.html()
EL
属性没有任何作用。
el
属性引用呈现视图的HTML内容,对吗?因此,调用
.html(view.el)
会将渲染视图附加到
#content
@user1813867,不过我明白你的意思了——他们可以只设置
el:“#content”
。也许他们想在应用程序的不同位置将该视图附加到其他位置?@muistooshort这是一个伟大的观点,我没有想到。因此,如果视图拥有自己的
el
,那么它也拥有视图中的click等处理程序;然而,如果它有
el:“#content”
,那么它的处理程序将附加到它自己范围之外的元素。这一定是我的主干应用程序失败的原因。