レンダリングされたメソッドは、_initializeLayoutの前に呼び出されています。
var _initializeLayout = function() {
console.log('initializeLayout...');
Controller.layout = new Layout();
Controller.layout.on("show", function() {
vent.trigger("layout:rendered");
});
vent.trigger('app:show', Controller.layout);
};
onrenderedメソッドのレイアウトを使用します。
// controller attach a sub view/ search View
vent.on("layout:rendered", function() {
console.log('layout:rendered =>StartController');
// render views for the existing HTML in the template, and attach it to the layout (i.e. don't double render)
var inspectorStartView = new InspectorStartView();
Controller.layout.inspector.attachView(inspectorStartView);
var playerStartView = new PlayerStartView();
Controller.layout.player.attachView(playerStartView);
});
試してみると、レンダリングされたコールバックが_initializeLayout()の前に呼び出されます。router/controllerメソッドで_initializeLayoutを呼び出しています。
Controller.go_inspector_control_center = function(term) {
_initializeLayout();
//vent.trigger("search:term", term);
};
もう一度実行したところ、別のコントローラーの_initializeLayout()メソッドからイベントがトリガーされていることがわかりました。
// private
var _initializeLayout = function() {
console.log('initialize Start Layout...');
Controller.layout = new Layout();
Controller.layout.on("show", function() {
**vent.trigger("layout:rendered"); // <--**
});
vent.trigger('app:show', Controller.layout);
};
イベントには一意の名前を付ける必要があるようです。やってみます。誰か知っているならチャイムを入れてください。
アンドリュー