0

我的渲染方法在_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);

};

我在渲染方法中使用布局:

// 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() 之前被调用。我让它在路由器/控制器方法中调用 _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);
};

看来事件需要具有唯一的名称。我会试试的。如果有人知道,请插话。

安德鲁

4

1 回答 1

0

你不能把我们 Java 人带到任何地方。答案(在 Javascript 中)是我确实需要唯一地命名我的事件。当你考虑它时,这是有道理的。

尽管我使用过的大多数事件系统都使用 X11/Java,但您不会使用它们给您的事件命名。

这是关于事件命名的stackoverflow问题。

我希望我的公开学习能帮助他人。;-)

于 2013-02-01T20:00:08.523 回答