Gwt 如何将EventHandler添加到使用MVP将Dynamicly添加到视图的小部件
我有一个代表网站面包屑的视图,我通过如下设置面包屑来更新视图Gwt 如何将EventHandler添加到使用MVP将Dynamicly添加到视图的小部件,gwt,handler,mvp,Gwt,Handler,Mvp,我有一个代表网站面包屑的视图,我通过如下设置面包屑来更新视图 public void setCrumb(ArrayList<Crumb> crumbs) { content.clear(); for (int i=0;i<crumbs.size()-1; i++){ Anchor anchor = new Anchor(crumbs.get(i).getText()) content.add(anc
public void setCrumb(ArrayList<Crumb> crumbs) {
content.clear();
for (int i=0;i<crumbs.size()-1; i++){
Anchor anchor = new Anchor(crumbs.get(i).getText())
content.add(anchor);
content.add(new InlineHTML(" > "));
}
content.add(crumbs.get(crumbs.size()-1).getText());
}
public void setCrumb(ArrayList crumbs){
content.clear();
对于MVP环境中的(int i=0;i),应在视图中创建UI元素并捕获事件,然后视图应处理这些事件并调用演示者采取适当的操作,如:
public void setCrumb(ArrayList<Crumb> crumbs) {
content.clear();
for (int i=0;i<crumbs.size()-1; i++){
Anchor anchor = new Anchor(crumbs.get(i).getText());
anchor.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
presenter.doSomethingAboutAnchorClicks(...);
}
});
content.add(anchor);
content.add(new InlineHTML(" > "));
}
content.add(crumbs.get(crumbs.size()-1).getText());
}
在MVP环境中,应在视图中创建UI元素和捕捉事件,然后视图应处理这些事件并调用演示者采取适当的操作,如:
public void setCrumb(ArrayList<Crumb> crumbs) {
content.clear();
for (int i=0;i<crumbs.size()-1; i++){
Anchor anchor = new Anchor(crumbs.get(i).getText());
anchor.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
presenter.doSomethingAboutAnchorClicks(...);
}
});
content.add(anchor);
content.add(new InlineHTML(" > "));
}
content.add(crumbs.get(crumbs.size()-1).getText());
}
在这种情况下,演示者从显示中获取小部件并向其添加处理程序。但我想,将演示者传递到视图,然后调用处理事件的方法可能是多种多样的……特别是在这种情况下,小部件是动态创建的。@Moh我的用例与您在此处显示的面包屑是动态创建的情况完全相同创建,仅显示区域而不是网站面包屑。我将自己版本的代码附加到我的答案中,可能会对您有所帮助。正如您在我的代码中所注意到的,我使用地图对象来保持整洁,并确保所有内容只添加一次。因为我的面包屑可能会变得非常深入,这是必须的。在这一过程中,演示者获得了小部件但我想将演示者传递给视图,然后调用处理事件的方法可能是多种多样的…特别是在这种情况下,当小部件是动态创建的。@Moh我有一个与您在这里显示的完全相同的用例,其中面包屑是动态创建的,只显示区域网站面包屑广告。我将自己版本的代码附加到我的答案中,也许这会对你有所帮助。正如你在我的代码中所注意到的,我使用地图对象来保持事物的整洁,并确保所有内容只添加一次。因为我的面包屑可能会变得非常深,这是必须的。