0

単純なビュー (削減されたコード):

My.View = Backbone.View.extend({
  className: 'my-view',
  initialize: function() { },
  render: function() {
    console.log('render');
    return this;
  }
});

次のように、別のビューでサブビューとして使用します。

var myView = new My.View();
this.$el.append(myView.render().$el);

まず、className の代わりにビューにテンプレートがあり、ビューが正常にレンダリングされました。ただし、テンプレートを削除して代わりに className を追加すると、正しくレンダリングされません。

div と正しいクラス名をレンダリングするだけですが、render メソッドでのロギングは実行されません。そして、 render メソッド内に html を this.$el に追加すると、表示されません。理由はありますか?

アップデート:

カスタム レンダリング コードを afterRender メソッド内に配置すると、機能します。私の場合、render メソッドを上書きできないのはなぜですか?

4

1 に答える 1

0
this.$el.append(myView.render().el);

サブビューを次のようにレンダリングします。

var myView = new My.View();
this.$el.append(myView.el);
myView.render();
于 2013-07-01T05:34:18.237 に答える