1

バックボーン アプリケーションで定義されたいくつかの単純な静的ビューがあり、数式にいくつかのサブビューを追加しようとしています。

ルートに直接移動すると、サブビューは正しくレンダリングされますが、ハイパーリンクを介してルートに移動すると、レイアウトは正しくレンダリングされますが、サブビューは正しくレンダリングされません。

何かが範囲外であるか、まだ初期化されていないようですが、何を特定するのに支援が必要ですか。

ルーター

App.Router = Backbone.Router.extend({
    routes: {
        "": "home",
        "tmp": "tmp",
    },
    home: function() {
      var home = new App.Views.HomeLayout();
    },
    tmp: function() {
      var tmp = new App.Views.TmpLayout();
    }
});

ビュー

App.Views.HomeLayout = Backbone.View.extend({
  el: $('body'),
  template: _.template($('#tmplLayout').html()),
  initialize: function() {
    this.render();
  },
  render: function() {
    $(this.el).append(this.template());

    var menu = new App.Views.HomeMenuView({el: this.$('#menu')});
    menu.render();

    var page = new App.Views.HomeView({el: this.$('#content')});
    page.render();

    return this;
  }
});
App.Views.HomeMenuView = Backbone.View.extend({
  template: _.template($('#tmplHomeMenu').html()),
  render: function() {
    $(this.el).html(this.template());
    return this;
  }
});

App.Views.HomeView = Backbone.View.extend({
  template: _.template($('#tmplHome').html()),
  render: function() {
    $(this.el).html(this.template());
    return this;
  }
});

アプリケーションは、次を使用して index.html (すべてのビュー テンプレートの場所でもあります) で初期化されます。

<script>
  new App.Router();
  Backbone.history.start();
</script>

tmp ビューは上記のほとんどのコピーですが、テンプレートが異なります。

私が試したこと:

  • サブビューの減速もルーターに移動しましたが、変更はありません。
  • 各サブビューの初期化メソッドに render の呼び出しを配置し​​ます (レイアウト ビューの定義方法と同様)。変更はありません。
4

0 に答える 0