Как обновить ngModel преобразованного элемента

#angularjs

#angularjs

Вопрос:

Мне нужно изменить модель преобразованного поля выбора изнутри директивы. Обычно я бы делал это с помощью require: '?ngModel' , но это работает только в том случае, если директива in прикреплена к элементу в качестве атрибута, чего не может выполнить преобразование.

Ответ №1:

Преобразованный контент привязан к родительской области действия директивы.

Можно использовать ng-form директиву, чтобы заключить преобразованные ngModelControllers и поместить эти контроллеры в область изоляции директивы.

   <ng-form name="$ctrl.form1">
    <fieldset>
      Transcluded content<br>
      <ng-transclude></transclude>
    </fieldset>
  </ng-form>
  

Затем можно использовать метод $setViewValue ngModelController:

   controller: function() {
    this.radioChange = function(val) {
      console.log(val);
      this.form1.sel1.$setViewValue(val);
      this.form1.sel1.$render();
    }
  },
  

ДЕМО-версия на PLNKR