每个布局我们需要不同的事件吗?

时间:2013-02-01 17:17:44

标签: backbone.js marionette

在_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);

};

我在on rendering方法中使用布局:

// 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);
});

当我尝试它时,我的on渲染回调在_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);
};

事件似乎需要有唯一的名称。我试试看。如果有人知道请进入。

安德鲁

1 个答案:

答案 0 :(得分:0)

你不能把Java家伙带到任何地方。答案(在Javascript中)是我需要唯一地命名我的事件。当你想到它时会有意义。

虽然我使用X11 / Java的大多数事件系统都没有为你的活动命名,但你会使用他们给你的东西。

这是stackoverflow question on event naming.

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