Menu Famo.us菜单-点击-还有其他方法吗?

Menu Famo.us菜单-点击-还有其他方法吗?,menu,famo.us,Menu,Famo.us,我一直在浏览Famo.us的示例和演示,尤其是菜单。在taasky、Timber等示例中,侧菜单由MenuItemView组成。每个MenuItemView由背景、图标和标题组成,每个都是一个表面 为了使每个菜单项都“可单击”,我是否必须在组成MenuItemView的3个曲面中的每个曲面上都添加一个.click并发出一个事件处理程序 还是有更简单的方法让每个菜单项“可点击” 提前感谢您的帮助:)是的,您要做的是将曲面事件通过管道传输到Views\u eventOutput处理程序。这样,单击事

我一直在浏览Famo.us的示例和演示,尤其是菜单。在taasky、Timber等示例中,侧菜单由MenuItemView组成。每个MenuItemView由背景、图标和标题组成,每个都是一个表面

为了使每个菜单项都“可单击”,我是否必须在组成MenuItemView的3个曲面中的每个曲面上都添加一个.click并发出一个事件处理程序

还是有更简单的方法让每个菜单项“可点击”


提前感谢您的帮助:)

是的,您要做的是将曲面事件通过管道传输到Views\u 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 return-这是菜单中最后一个菜单项的值-因此,当它工作时,我认为它不会区分单击哪个菜单项。您所描述的是一个javascript实现问题,可以使用函数绑定解决。。因此,您的单击处理程序看起来更像这样。。view.on('click',函数(evt){console.log(this)}.bind(view))。。函数中的“this”将是单击的视图。。