2012-08-29 52 views
1

Backbone沒有提供任何有關如何構建應用程序的清晰模式。我現在遇到一些困難。在下面的圖片中,我以視覺和簡單的方式描述了我想要得到的東西。Backbone:如何設置正確的容器並處理更改

我有一個任務列表。我希望在碰巧具有相同的截止日期的任務之後列出截止日期。日期也按照時間順序排列。

的一種方法,我決定採取的是有:

  • 日期的集合,每個日期
  • 任務的集合和子圖的圖(父視圖是日期視圖)的每個任務

在你看來,這是一個很好的解決問題的方法嗎?

潛在的問題,不斷更新時間:

  • 如果我更改日期,我想日期容器祭出,使它們按時間順序(再取出所有日期的集合?)
  • 如果我更改任務的截止日期,我希望任務移動到正確的日期容器(刪除其觀點和重新獲取所有任務的集合?
  • 如果另一個用戶更改了任務我想它會被反映出來(是取適當的東西做?

enter image description here

回答

2

這是問題的一個好方法?

是的!:的CollectionView - >(N)ModelViews(深如需要)

如果我更改日期,我想日期容器祭出,使它們按時間順序(重新獲取所有日期的集合?)

你總是要更改發送到服務器,但你並不需要再取出什麼,你已經擁有了數據在你的手,你可以重新渲染。這個重新渲染的優化取決於很多細節。

如果我更改任務的截止日期,我希望任務移動到正確的日期容器(刪除其觀點和重新獲取所有任務的集合?)

同樣的,你不要不需要索取數據。只需從實際的DateContainer集合中刪除已更改的Task並將其添加到新的DateContainer的集合中即可。讓DateContainers迴應這個add/remove事件。

如果另一個用戶更改了任務,我希望它是反映(是取合適的事是什麼?)

嗯,這是一個很開通的問題。如您所說,您可以每X秒重新獲取一次數據。或者,您可以在您的API中實施優化的updated_elements請求,並每隔X秒要求一次。或者你可以通過WebSockets的方式。

+0

請您詳細說明一下嗎?你如何設想'updated_elements'請求?它應該返回什麼? – Andrew

+1

這應該是你的架構的一個複雜模式。您應該定義一種方法來記錄數據庫中的所有更改,並能夠以_json_格式封裝它們。該請求可能類似於:'updated_elements?since = 123',其中'123'是您的前端應用程序所知道的最後一次更改。然後在你的前面你必須實現一個系統來減輕這些變化。 – fguillen

+0

好的謝謝。這說得通! – Andrew

相關問題