2012-12-19 39 views
2

我想了解如何在Backbone中處理模型的部分編輯和驗證。Backbone中的部分模型編輯和驗證

我有一個擁有20多個屬性的薪資單模型。用戶可以編輯部分工資單(例如超時屬性),應用程序將顯示一個模式對話框,用戶可以更改與加班相關的四個屬性。

用於編輯超時的模式對話框有一個相關的Backbone視圖'OvertimeEditor',它包含視圖邏輯。有10個這樣的視圖/模態對話框用於處理不同的屬性。

編輯器視圖不直接與模型進行交互,有一個調解器。介體調用視圖上的參數化函數,填充並顯示模態對話框。當用戶點擊保存視圖時,調用更新模型屬性的介體上的參數化函數。

我應該如何在對話框中處理驗證?即我只想驗證所討論的四個屬性,而不是整個模型。

編輯器視圖當前不使用模型。我應該創建僅用於編輯器視圖的模型嗎?例如PayslipOvertime模型?或者我應該在視圖中手動實現驗證(聽起來不正確)?

+3

爲其編輯人員創建具有足夠屬性的每個視圖模型,然後他們可以基於主要大型模型自行初始化,並且您可以有一種將迷你模型合併回主要模型的方法。您可以通過驗證器功能庫共享驗證碼。迷你模型的額外層使得不小心編輯錯誤的東西變得更加困難,我發現在完成時編輯副本併合並它(即git樣式的fork/commit/merge編輯)可以簡化很多事情。 –

+0

Gotcha。我假設,在我的情況下,我推介了在中介中傳遞屬性的代碼? – JimmyP

+0

或者可能的迷你模型構造函數('mini_model = new MiniModel({full_model:model})')。取決於你的具體情況下的意義(像往常一樣:)。 –

回答

0

我會考慮繼續維護一套工資單模型,其中每個模型都包含具有「可編輯」成員的屬性集合。這樣你可以避免分配額外的對象。

[ 
    {name: "Overtime", value:10, editable:true, required:true }, 
    {name: "hours", value:40, editable:false, required:false }, 
    ... 
] 

如果我理解正確你的問題,我寧願依靠驗證這些編輯或所需的性能,而不是創造更多的車型。