我有一個用戶界面,看起來像這樣:MVP模式:多個演示者應該分離或者他們可以直接溝通?
+--------+---------------+
| model1 | model details |
| model2 | here, |
| model3 | loaded as the |
| | user selects |
| | a model from |
| | the left. |
| | |
+--------+---------------+
我使用MVP pattern驅動這個UI。
我在這裏簡化了很多,但爲了分而治之,我想將Presenter分成兩部分:一部分處理用戶在左側視圖中的用戶手勢(用戶在此視圖中更改模型列表,例如排序)和另一個在右側視圖中處理用戶手勢的演示者(用戶在此視圖中更改單個模型)。
雖然左側的演示者與整個模型列表進行交互,但右側的演示者僅與單個模型交互:用戶從左側列表中選擇的模型。 IOW從左至右驅動UI。
用戶選擇後(即點擊)在左邊的模型,我當前的實現看起來像(大約):
LeftPresenter.onModelClick = function(event) {
var model = this.getModelFromEvent(event);
this.view.setSelectedModel(model); // updates list widget on left
RightPresenter.setSelectedModel(model); // notify the other Presenter
}
RightPresenter.setSelectedModel = function(model) {
// lazy load the model from the db, and update the
// view when the model fires the "loadComplete" event
model.bind('loadComplete', this.view.setModel);
model.lazyLoad();
}
這是我在WRT模糊的部分MVP模式,或任何MVC GUI模式:
- 是否可以由多個演示者驅動?
- 多個演示者應該分離開來,還是可以直接相互溝通?
所以我的問題歸結爲:什麼來指示RightPresenter
用戶選擇了LeftPresenter
的觀點模型的最佳方式?