1

我们有两个主干视图:一个父视图(PersonView)和它的子视图(LocationView)。他们的模板,在 Mustache 表示法中,是下一个:

PersonView template:
    <h2>{{fullName}}</h2>
    <div>
        <h3>Address:</h3>
        {{{location}}}
    </div>

LocationView template:
    <hr />
    <dl>
        <dt>City:</dt>
        <dd>{{city}}</dd>
        <dt>Place:</dt>
        <dd>{{place}}</dd>
    </dl>

注意这些模板没有父元素;因此,Backbone 将默认在“el”属性中为它们指定“div”元素。

在 PersonView 的“render”方法中,我们如何在不丢失 LocationView 的事件和不添加“LocationView.el”的默认包装“div”元素的情况下将 LocationView 的渲染 HTML 添加到“PersonView.el”中?

我们尝试了很多方法,如果我们删除 de subview 的“el”属性,我们总是会丢失事件(在子视图中),但是如果我们保留那个“el”,那么如果我们想将它与 jQuery 事件相关联就会出现问题:-(

有人对此有任何解决方案吗?提前致谢。

4

1 回答 1

0

详细说明我的评论...

位置视图:

var LocationView = Backbone.View.extend({
    tagName: 'dl'
});

位置视图模板:

<dt>City:</dt>
<dd>{{city}}</dd>
<dt>Place:</dt>
<dd>{{place}}</dd>

PersonView 模板:

<h2>{{fullName}}</h2>
<div>
    <h3>Address:</h3>
    <hr />
    {{{location}}}
</div>

现在,在 LocationView 实例中,this.el将是 a<dl>而不是<div>.

于 2013-03-01T16:25:21.523 回答