2014-10-10 3 views
0

Я пытаюсь создать форму динамически, используя ответ сервера. Форма может иметь поля, которые вложены, сгруппированы и так далее. Я попытался создать директиву для моего типа поля как «form-field» и использовал директиву ng-include для повторения для всех вложенных полей.Угловые вложенные поля формы с использованием директивы

Когда я делаю это с помощью ul-li, вывод выглядит корректно, но когда я начинаю использовать поля и текстовые поля, вывод не выводит вообще для текстовых полей.

// Code goes here 

angular.module('NestedForm', []). 
controller('formController', function($scope) { 


}).directive('formField',function($compile) { 
    return { 
     replace:true, 
     require:'ngModel', 
     scope:{ 
      data :'=data', 
      ngModel : '=' 
     }, 
     restrict:'E', 
     link : function($scope, $element, $attrs) 
     { 
      var type = $scope.data.type; 
      var html = ""; 
      switch(type) 
      { 
      case 'textbox' : 
       html = '<input id=\''+$scope.data.name+'\' type="text" ng-model="ngModel" class="form-control">';break; 
      case 'fieldset' : 
       html = '<fieldset><legend>'+$scope.data.name+'</legend></fieldset>';break; 
      default: 
       break; 
      } 
      var $e =$compile(html)($scope); 
      $element.replaceWith($e); 
     } 
    } 
}); 

http://plnkr.co/edit/9b7wnPaaeppdJyq26qlN

Цените вашу помощь.

ответ

1

Во-первых, ваш вопрос слишком длинный. Многие люди просто хотят быстро читать, понимать и отвечать, если они знают об этом. Если вопрос слишком длинный, мы не читаем быстро, понимание неверно, и ответ не вытекает из полного понимания вашего вопроса.

Я не полностью прочитал ваш вопрос, но, похоже, вы заменяете полный элемент.

Проверьте это.

http://plnkr.co/edit/01T5d4ngGviKI0jPafSO?p=preview

 var $e =$compile(html)($scope); 
     $element.append($e); //instead of replacing it 
+0

К сожалению о длинном после выпуска. По какой-то причине, когда я отправил, мне пришлось разместить код, и я поместил все это. Спасибо за решение. Это частично решает мою проблему. Я пытаюсь получить поля формы внутри

. Должен ли я использовать компиляцию вместо ссылки. – Kathir

+0

1. поскольку форма не может иметь форму, нет вложенной формы. Вы можете сказать вложенные поля. 2. fieldset - это контейнер, а поле ввода - это элементы, оно должно иметь разные директивы. 3. В поле fieldset он генерирует html, включая директивы text и fieldset, затем скомпилируйте его. – allenhwkim

Смежные вопросы