バックボーン アプリケーションで定義されたいくつかの単純な静的ビューがあり、数式にいくつかのサブビューを追加しようとしています。
ルートに直接移動すると、サブビューは正しくレンダリングされますが、ハイパーリンクを介してルートに移動すると、レイアウトは正しくレンダリングされますが、サブビューは正しくレンダリングされません。
何かが範囲外であるか、まだ初期化されていないようですが、何を特定するのに支援が必要ですか。
ルーター
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 の呼び出しを配置します (レイアウト ビューの定義方法と同様)。変更はありません。