public class PersonListEditor extends Composite implements IsEditor<ListEditor<Person, PersonListItemWidget>> {
private static PersonListEditorUiBinder uiBinder = GWT.create(PersonListEditorUiBinder.class);
interface PersonListEditorUiBinder extends UiBinder<Widget, PersonListEditor> {}
private class Source extends EditorSource<PersonListItemWidget> {
@Override
public PersonListItemWidget create(int index) {
PersonListItemWidget widget = new PersonListItemWidget();
panel.insert(widget, index);
return widget;
}
}
@UiField VerticalPanel panel;
private ListEditor<Person, PersonListItemWidget> editor = ListEditor.of(new Source());
public PersonListEditor() {
initWidget(uiBinder.createAndBindUi(this));
}
@Override
public ListEditor<Person, PersonListItemWidget> asEditor() {
return editor;
}
}
PersonListItemWidget
削除ボタンがあり、このボタンをクリックすると、関連するアイテムをリストから削除する必要があります。
リッスン アイテム ウィジェットの通知 (「削除ボタンがクリックされた」など)を作成できますが、この場合、実際に必要な実際のオブジェクトで
PersonListEditor
はなく、ウィジェットへの参照しかありません。Person
また、パネル アイテムのリストから関連するウィジェットのインデックスを取得し、そのインデックスでオブジェクトを取得するロジックを追加することもできますPerson
が、これは見栄えが悪くなります。私は私
PersonListItemWidget
を にすることができるValueAwareEditor
ので、各ウィジェットはその を知ることができますが、ビューレイヤーはモデルを認識すべきではなく、「ボタン」と「ラベルのみであるべき」とGoogleが言っているのでPerson
、全体のアイデアはMVP違反のように見えますValueAwareEditor
"。
ここで正しいアプローチは何ですか?