2011-03-15 62 views
2

我在GWT MVP视图中拥有CellTable,并且希望在行上执行某些操作时通知主持人。例如,为一行提供了一个弹出式菜单,并选择了一个动作(删除/编辑/等)。显然有一个可以通过HasData获得的SelectionModel,但是我将如何使用这个来传回action的动作。MVP,将行事件传递回主持人的最佳做法

是否有一个标准的接口(如HasData),我可以用它来传递给Presenter?

回答

0

通常在GWT中,MVP View公开了一个可以注册事件处理程序的对象:通常是HasXyxHandlers的形式,如HasClickHandlersHasChangeHandlers

在CellTable的情况下,它的命名方式不同:SelectionModel。在查看刚刚实施,返回它的方法:

SelectionModel<YourClass> getSelectionModel(); 

然后演示者调用此方法并将自身注册为:

final SelectionModel<YourClass> selectionModel = view.getSelectionModel(); 
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { 
    @Override 
    public void onSelectionChange(SelectionChangeEvent event) { 
     YourClass selectedObject = selectionModel.getSelectedObject(); 
     // do something with selectedObject 
    } 
}); 
+0

谢谢。我可以通过hasData接口访问SelectionModel,我正在注册事件。但是,我想知道用户真正想要做什么选择。例如,用户点击行并弹出菜单。用户选择其中一个选项(属性,下载,删除...),此时我希望我的演示者被告知有关选择。 – Dan 2011-03-15 21:26:09

+0

您的示例中的代码无法编译,因为getSelectedObject()方法仅在SingleSelectionModel上定义。 – CoolMcGrrr 2011-07-22 11:38:46

+0

然后使用'MultiSelectionModel'并调用'getSelectedSet()'。 – 2011-07-22 11:53:17

0

更多这方面的思考,我可能会超过工程它。如果我在视图中重复使用了一个弹出式菜单,并让演示者在菜单(而不是CellList)上监听点击事件,则可以通过按钮的处理程序查询CellList选择模型。

相关问题