Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
backbone.js el存在,但不显示内容_Backbone.js_Marionette_Backbone Views - Fatal编程技术网

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()
            { ........