是的,你想要做的是管你的面事件視圖_eventOutput處理程序。這種方式只需要在視圖本身上定義點擊事件。
在這個例子中有兩個表面,每個管道將所有事件都傳遞給_eventOutput視圖。當我們點擊任一表面時,視圖點擊事件被觸發
希望這有助於!
var Engine = require('famous/core/Engine');
var Surface = require('famous/core/Surface');
var View = require('famous/core/View');
var context = Engine.createContext();
var view = new View();
var surface1 = new Surface({
size:[400,400],
properties:{
backgroundColor:'green'
}
});
surface1.pipe(view._eventOutput);
view.add(surface1);
var surface2 = new Surface({
size:[200,200],
properties:{
backgroundColor:'red'
}
});
surface2.pipe(view._eventOutput);
view.add(surface2);
view.on('click',function(evt){
console.log("View Clicked!");
})
context.add(view);
對不起,延遲迴復。我嘗試了你的建議 - 儘管它在某種程度上有效,但如果我將它用於「MenuItemView」示例,那麼當我點擊菜單項時,我會得到相同的onClick返回 - 這是最後一個值菜單中的菜單項 - 所以雖然它的工作,我不認爲它區分哪些被點擊。 – Pandafinity
你所描述的是一個JavaScript實現問題,可以使用函數綁定來解決。所以你的點擊處理器看起來更像這樣.. view.on('click',function(evt){console.log(this)} .bind(view))..在這個函數中的'this'將被點擊的視圖.. – johntraver
我很抱歉,但我不認爲它的作品 – Pandafinity