我有类似的东西。
Grid<Stock> mygrid = new Grid<Stock>(store, cm)
{
@Override
protected void onAfterFirstAttach()
{
super.onAfterFirstAttach();
//here do the binding for the cell elements that have myclass
}
};
对于mygrid
的观点,我有这个
view.setViewConfig(new GridViewConfig<Stock>()
{
@Override
public String getRowStyle(Stock model, int rowIndex)
{
return "";
}
@Override
public String getColStyle(Stock model, ValueProvider<? super Stock, ?> valueProvider, int rowIndex, int colIndex)
{
String style = "";
if(SOME_CASE)
{
style = "myclass";
}
return style;
}
});
我想要做的是onAfterFirstAttach
我想添加一些监听器/处理程序,在hover
期间会做一些事情,让我们说为了简单起见,给出一个alert
。
我正在尝试做什么?我可以在不使用JSNI
或像gwtquery
这样的库的情况下完成我想要的工作吗?是否确保onAfterFirstAttach
应该拥有类myclass
的所有单元格都可用且可访问?如果是,我如何附加我想要的监听器/处理程序?
问题似乎很多,但我相信它们都是相互关联的。
我正在使用GWT 2.6和GXT 3.1。
更新
我忘了提到一个可行的解决方案是在整个网格上添加一个listener for the mouse move,然后获取每个单元格并检查它是否具有所需的类,但这似乎有点过分。必须有一个更简单的方法。
答案 0 :(得分:1)
浏览器会触发本机事件(单击,聚焦,模糊等),无论您是否需要它们。这些事件“冒泡”了DOM树,让您有机会在适当的级别“倾听”它们。
在您的示例中,您可以在单元格级别创建30个侦听器,等待“他们的”单元格中发生的事情。这是一个繁重的(30个对象)和缓慢的(构建和绑定所有这些)需要时间的解决方案。或者,您可以在网格级别创建一个侦听器,该侦听器侦听从单元格冒出的所有事件,并决定是否需要执行某些操作或应忽略事件。单个侦听器更轻,可以更快地创建。另一方面,它需要检查事件,尽管它通常是快速有效的操作(例如,检查事件源具有特定的类名)。另请注意,当浏览器通常无需执行任何操作时,此操作需要一些时间,因此仅检查事件以忽略它们不会影响用户体验。
根据我的经验,单个监听器几乎总是一个更好的解决方案,尽管现代浏览器和计算机速度很快,差异很小。