Backbone:子视图,默认的“div”包装器和委托事件

时间:2013-03-01 16:10:29

标签: events backbone.js subviews

我们有两个主干视图:父视图(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的“渲染”方法中,我们如何将LocationView的渲染HTML添加到 “PersonView.el”没有放弃LocationView的事件而没有添加deafult包装 “LocationView.el”的“div”元素?

我们尝试了很多方法,如果我们删除de subview的“el”属性,我们总是会松开 事件(在子视图中),但如果我们保留“el”,那么如果我们愿意,我们就会遇到问题 将它与jQuery事件联系起来: - (

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

1 个答案:

答案 0 :(得分:0)

详细说明我的评论......

LocationView:

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

LocationView模板:

<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将是<dl>而不是<div>