backbone.js el存在,但不显示内容
我被视图的backbone.js el存在,但不显示内容,backbone.js,marionette,backbone-views,Backbone.js,Marionette,Backbone Views,我被视图的el属性卡住了几个小时。 我使用的是木偶网,但我想逻辑是一样的 无论如何,我要做的是:创建一个布局视图并添加一个侧栏:(所有内容都是通过require.js请求的) ApplicationLayout.js define ( ['marionette', 'tpl!templates/dashboard/application/ApplicationLayout.tpl'], function (Marionette, tpl) { "use s
el
属性卡住了几个小时。
我使用的是木偶网,但我想逻辑是一样的
无论如何,我要做的是:创建一个布局视图并添加一个侧栏:(所有内容都是通过require.js请求的)
ApplicationLayout.js
define
(
['marionette', 'tpl!templates/dashboard/application/ApplicationLayout.tpl'],
function (Marionette, tpl)
{
"use strict";
return Marionette.Layout.extend
(
{
template: tpl,
className: 'row',
regions:
{
sidebar: '#application-nav',
detail: '#application-detail'
}
}
);
}
);
ApplicationLayout.tpl:我在inspector->layout中看到了这一点,它正确地呈现了布局
<div class="span2">
<nav id="application-nav">
</nav>
</div>
要呈现的模板:
<ul class="nav nav-tabs nav-stacked main-menu">
<li><a href="/application/<%= appId %>/settings"><i class="icon-home"></i> Settings</a></li>
</ul>
现在我不明白的是,当我删除el之前的评论时,为什么它不起作用,那么它就什么都没有显示
即使我尝试使用$('#应用程序细节').html(html)代码>它没有显示任何内容。但是,$(“#应用程序详细信息”)
正确返回对象。。。这是怎么回事
我还尝试用视图传递{el:#application nav},但这也不起作用
它没有显示任何内容。。但是,当我没有指定el元素时,它工作得很好,但它将其包装在一个div中。。我不想要强>
我似乎找不到问题,而且我也不知道。。有什么想法吗?默认情况下,Bakcbone会在渲染视图时创建一个Div,因此如果不想创建Div,请在视图中更改此默认值,方法是将tagName属性设置为所需的HTML元素
return Marionette.ItemView.extend
(
{
template: tpl,
tagName 'nav',
className : 'yourCSSClass',
initialize : function()
{ ........
另外,您指定的el是布局内部区域的el,即冲突。我认为您应该在这里使用带区域的loyout,并通过region.show(myViewInstance)在区域内呈现项目视图代码>是的,我知道我可以添加一个标记名和一个className属性,在这种情况下问题就解决了,但我认为可以设置el属性,并将html添加到该元素中,对吗?要呈现的HTML只是一个ul元素,我已经添加了它,我认为您的方法可以在其他场景中使用(在视图中设置el,但在这种情况下,冲突在于您使用的是同一个区域el。将区域el更改为更高级别,在视图中使用标记名作为导航元素。但这就是我想要的:将渲染模板添加到作为区域的元素中。这不可能吗?如果这样做,并关闭视图,则el将被删除,您将无法在该区域显示另一个视图,因为el已不在DOM中。哦..我当然不想这样。嗯,好的,您能编辑您的答案以添加标记名和类名吗?我想这是本例中的解决方案..我会接受:)
<ul class="nav nav-tabs nav-stacked main-menu">
<li><a href="/application/<%= appId %>/settings"><i class="icon-home"></i> Settings</a></li>
</ul>
return Marionette.ItemView.extend
(
{
template: tpl,
tagName 'nav',
className : 'yourCSSClass',
initialize : function()
{ ........