1

親ビュー (PersonView) とそのサブビュー (LocationView) の 2 つのバックボーン ビューがあります。それらのテンプレートは、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>

これらのテンプレートには親要素がないことに注意してください。そのため、バックボーンはデフォルトで「el」プロパティの「div」要素を割り当てます。

PersonView の "render" メソッドで、LocationView のイベントを失うことなく、"LocationView.el" のデフォルトのラッピング "div" 要素を追加せずに、LocationView のレンダリングされた HTML を "PersonView.el" に追加するにはどうすればよいですか?

多くの方法を試しましたが、サブビューの「el」プロパティを削除すると、(サブビュー内の) イベントは常に失われますが、その「el」を保持すると、jQuery イベントに関連付ける場合に問題が発生します。 :-(

誰もこれについて何か解決策を持っていますか? 前もって感謝します。

4

1 に答える 1

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>ます。

于 2013-03-01T16:25:21.523 に答える