後端返回JSON這樣的:AngularJS。裝飾模型
[
{
id: 1,
name: "the name",
countryIds: [ 1,2,3]
}, ...
]
正如你可以看到有countryIds
財產。在客戶端我已經緩存的國家名稱與對應的標識:
[
{
id: 1,
name: "USA"
},
{
id:2, name: "France"
}...
]
,所以檢索該對象時,我只需要添加新的countries
財產,我指定國名:
obj.countries = getCountryNamesByIds(obj.countryIds);
所以我最初的對象,然後看起來是這樣的:
{
id: 1,
name: "the name",
countryIds: [ 1,2,3],
countries: ["USA", "France", "England"]
}
的問題是,更新(使用PUT
法)之後,發送對象到服務器時,我不想仙d到服務器的countries
屬性。我如何以更優雅的方式處理這種情況?在我看來有幾個選擇:
1.當發送對象到服務器只是刪除所有不必要的屬性(壞方法,因爲如果新屬性將被添加到JSON,那麼我需要在控制器邏輯中也應用相同的更改);
2.不要裝飾用新countries
媒體資源相關聯的對象,並且暴露出一些應用程序級的方法,如
$ rootScope.getCountryNamesByIds = getCountryNamesByIds;
,然後用它的模板:
<label> Countries </label>
<div> {{getCountryNamesByIds(obj.countryIds)}} </div>
3.不要裝飾物與新countries
媒體資源相關聯,並創建名爲指令其countryNames
將產生從國家的ID(國名作爲第2點):
<div country-names country-ids="obj.countryIds"> // There will be shown country names generated from their IDs</div>
你怎麼想,有什麼選擇更優雅?或者有什麼其他方式來解決我的挑戰?