2014-07-06 45 views
1

我得到了三個js文件,AppView,NavigationMenuView和HeaderView。Famo.us將事件傳遞給另一個視圖

我想在NavigationMenuView中按下按鈕時將事件發送到My HeaderView。這是我到目前爲止。當我在導航視圖中點擊按鈕時,會發出一個名爲「設置」的事件。然後Appview捕捉事件。我很難嘗試將此事件傳遞給HeaderVew。 代碼如下。

由於

APPVIEW代碼

function AppView() { 
    View.apply(this, arguments); 
    this.menuToggle = false; 

    CreateHeaderView.call(this); 
    CreateNavigatinMenuView.call(this); 
    SetListeners.call(this); 
} 

AppView.prototype = Object.create(View.prototype); 
AppView.prototype.constructor = AppView; 

function CreateHeaderView() { 
    this.HeaderView = new HeaderView(); 
    this.HeaderModifier = new StateModifier(); 

    this.add(this.HeaderModifier).add(this.HeaderView); 
} 

function CreateNavigatinMenuView() { 
    this.NavigationView = new NavigationMenuView(); 
    this.NavigationViewModifier = new StateModifier(); 
    this.NavigationViewModifier.setTransform(
     Transform.translate(-dimensions[0], 0, 0), {} 
     ); 

    this.add(this.NavigationViewModifier).add(this.NavigationView); 
} 

function SetListeners() { 
    this.NavigationView.on('settings', function() { 
     //HERE IS WHERE I WHOULD EMIT TO HEADER VIEW 
    }.bind(this.HeaderView)); 
} 

module.exports = AppView; 

});

APPVIEW

function SetListeners() { 
    this.settingsButton.on('click', function() { 
     this._eventOutput.emit('settings'); 
    }.bind(this)); 

}

HeaderView

context.on('settings', function() { 
    alert("Test"); 
}.bind(this)); 

回答

0

我假定第二個`SetListeners'是從NavigationMenuView(而不是APPVIEW如上所述)?

我覺得在APPVIEW,代碼應該是:

function SetListeners() { 
    this.NavigationView.on('settings', function() { 
     this.HeaderView._eventOutput.emit('settings'); 
    }.bind(this)); 
} 

而且在HeaderView:

this.on('settings, function() { 
    // your code 
} 

上famo.us音色例子還包括事件管道的很好的例子: Timbre example

相關問題