2

我需要以更新它的屬性的現有值或值添加到被多值屬性生成基於文檔結構動態形式的一種方式。AngularJS:動態表單生成

我有角,其接收文檔類名稱和ID並拉動該類的特定文檔的控制器。

控制器讀取文檔並保存數據,如屬性數量,屬性類型,屬性是否爲多值以及值。

每個類的屬性數量不同,屬性類型不同。

這裏是通過我的控制器爲特定類的特定文檔生成的數據的一個例子:根據經處理的類

CLASS/id {cid: "Disease/54d49a8c3b70f6cce63dc475"} 
N° ATTRIBUTES:3(without counting multivalues of the same attribute) 


///////////////////////////////////////////////////////////////////////////////////////////// 
ATTRIBUTE NAME:displayName 
///////////////////////////////////////////////////////////////////////////////////////////// 
ATTRIBUTE DATA TYPE:text 
MULTI VALUE ATTRIBUTE:0(not multivalue field) 
ATTRIBUTE N° OF VALUES:1(existing n° of values at the moment) 
ATRIBUTE ARRAY POSITION:0 ---> value displayName #1 


///////////////////////////////////////////////////////////////////////////////////////////// 
ATTRIBUTE NAME:identifier 
///////////////////////////////////////////////////////////////////////////////////////////// 
ATTRIBUTE DATA TYPE:text 
MULTI VALUE ATTRIBUTE:1(multivalue field) 
ATTRIBUTE N° OF VALUES:1(existing n° of values at the moment) 
ATRIBUTE ARRAY POSITION:0 ---> value identifier #1 


///////////////////////////////////////////////////////////////////////////////////////////// 
ATTRIBUTE NAME:r 
///////////////////////////////////////////////////////////////////////////////////////////// 
ATTRIBUTE DATA TYPE:date 
MULTI VALUE ATTRIBUTE:1(multivalue field) 
ATTRIBUTE N° OF VALUES:3(existing n° of values at the moment) 
ATRIBUTE ARRAY POSITIONS:0 ---> value r #1 
ATRIBUTE ARRAY POSITIONS:1 ---> value r #2 
ATRIBUTE ARRAY POSITIONS:2 ---> value r #3 

和記錄這些值的變化。

這一切工作正常,但我新的角度和不知道如何根據前者產生的數據呈現在觀察側的東西。

基於以上我顯示的數據例如希望產生的形式是這樣的:

enter image description here

誰能幫我出我,這是正確的做法?

回答

7

1)的文檔數據轉換爲對象的JSON列表,每個對象是一個字段:

fields = [ 
{"name": "displayName", dataType: "text", isMultiValue: false, numberOfValues: 1}, 
... 
] 

這可能是最複雜的部分。

2)某處在控制器:

$scope.documentData = {}; 
$scope.getFieldTemplateUrl = function(field) { 
    return '/url/to/field/templates/' + field.dataType + '.html'; 
}; 

3)

<div ng-repeat="field in fields"> 
    <div ng-include="getFieldTemplateUrl(field)"></div> 
</div> 

4)定義爲每個dataType那些字段模板。 「文本」這是相當簡單:

<label for="{{field.name}}">{{field.name}}</label> 
<input id="{{field.name}}" type="text" ng-model="documentData[field.name]" /> 

大廈這一點,您需要添加支持isMultiValue和可能填充documentData與現有的數據。

也有很多圖書館做正是這一點:

+0

感謝這使我在正確的軌道上... –