最近,我一直在與很多中級開發人員討論如何構建API以更好地適應AngularJS提供的雙向綁定。我們一直試圖確定API是否應該非常明確,它們的定義可以更好地使用w/Angular,但是會爲中間層帶來更多的工作量,或者更加隱含,並且在Angular中有額外的邏輯來「按摩」將數據轉化爲良好的Angular模型。用於構建AngularJS應用程序的適當API體系結構
讓我們從一個例子開始。假設我們正在談論某種數據備份服務。該服務允許您備份數據並將數據保留X年或無限期。 UI有2個元素來控制這個邏輯。有一個<select>
,允許用戶選擇他們是否要刪除數據「從不」或「之後」X年。如果選擇「從不」,那麼我們會隱藏年份輸入,但如果選擇「之後」,那麼我們會顯示年份輸入並允許他們輸入1-99之間的數字。
這樣做我已經引入了2個不同的元素控件,每個控件都控制$scope
模型上的不同屬性。
但是,在API上,我的中間層人員想要使用名爲「YearsRetention」的單個屬性來控制所有這些。如果YearsRetention == 0
那麼「隱含」意味着我們想要無限制的保留,但是如果它被設置爲任何> 0,那麼保留被設置爲該值。
所以基本上他想要使用這個單一值來控制保留設置,這將迫使我編寫某種轉換函數,以便在$ scope中設置值以實現UI中的相同效果。這種轉換將不得不在傳入和傳出數據上發生。最後,我想知道是否應該隱式定義API(API發送單個值,然後Angular需要將數據轉換爲可用的視圖模型),或者顯式地(API發送直接綁定所需的所有值到用戶界面,並減少需要轉換的JSON)?
很抱歉,如果這是一種羅嗦..它是很難總結我的問題以簡潔的方式。我可以重新迭代某些東西,如果需要的話 – 2014-12-02 20:21:50