2014-07-23 91 views
0

有沒有更好的方法來填充這個從子數組中選擇下拉列表贏得我的json結果? 雖然它看起來格式正確,但以下方法無效。有任何想法嗎? 我有一個指令,可以在一個angularui手風琴內動態構建一個表單。 下面的這段代碼會查看該類型是否是下拉菜單,然後獲取收集結果並將值/文本放入選擇下拉菜單中。 DDLValue是一個帶有我需要的下拉數據的json數組。我知道有更清晰的方式購買我是Angular的新手。請幫忙。由於指令中的角度下降

我對PLNKR http://plnkr.co/edit/R4auh433JG1GuiYppExm?p=preview

app.directive('ngFormfield', function() { 
     return { 
link: function (scope, element, attrs) {    
    if (scope.record.Type == 'Dropdown') { 
       element.html('<select class="btn btn-default dropdown" ng-model=' + scope.record.DDLValue.value + ' ng-options="obj.value as obj.text for obj in ' + scope.record.DDLValue + '"></select>'); 
    } 
} 

JSON

records:[{ 
     { 
      RecordId 91, 
      Type:"Dropdown', 
      "Label": "Favoritebook", 
      "DDLValue": "[{ 'value': '1', 'text': 'HarryPotter' }, 
          { 'value': '2', 'text': 'StarGate' }]" 
     }] 
+0

請創建小號的jsfiddle或plunker此 – Aidin

+0

這是一個可行的plunkr。唯一不起作用的是填充下拉菜單。任何幫助表示讚賞.http://plnkr.co/edit/R4auh433JG1GuiYppExm?p = preview – Keith

回答

0

了我的問題的一個例子,您必須重新編譯元素添加到DOM。在您將新元素集成到Angular應用程序之前,Angular不知道加載到頁面中的新元素。 實例Plnkr http://plnkr.co/edit/R4auh433JG1GuiYppExm?p=preview

app.directive('ngFormfield', function ($compile) { 
      return { 
       link: function (scope, element, attrs) { 

        if (scope.record.Type == 'Label') { 

         element.html('<label type="label" ng-model="record.DDLValue.value"/>' + scope.record.Label + '</label>'); 

        } 
        else if (scope.record.Type == 'Text') { 
         element.html('<td colspan="8">'+scope.record.Label + ': <input type="text" name="fname"></td>'); 
        } 
        else if (scope.record.Type == 'Dropdown') { 
         element.html('<td colspan="8"><select class="btn btn-default dropdown" ng-model=record.DDLValue.value ng-options="obj.value as obj.text for obj in record.DDLValue"></select></td>'); 
        } 

       fix---> $compile(element.contents())(scope); 
       } 
      } 
     });