Вопрос:

Получить значение ng-модели элемента в директиве

angularjs angularjs-directive

566 просмотра

1 ответ

1493 Репутация автора

Это вымышленный пример, у меня есть огромный шаблон с несколькими формами, и я хочу отметить разделы, которые касались входов.

<section my-directive>
  <form name="user">
    <input type="text" ng-model="someCtrlAlias.data.firstname">
    <input type="text" ng-model="someCtrlAlias.data.lastname">
  </form>
</section>

<section my-directive>
  <form name="address">
    <input type="text" ng-model="someCtrlAlias.data.street">
    <input type="text" ng-model="someCtrlAlias.data.zipcode">
  </form>
</section>

Я хочу проверить каждое поле ввода, если оно было затронуто. В основном то, что делает $ dirty, но проблема в том, что пользователь может сохранить и продолжить позже, поэтому $ dirty исчезает. Я не хочу разделять подчиненную форму на data1.firstname, data2.street, потому что тогда мне нужно удалить эти поля позже при сохранении базы данных.

Я пробовал это:

angular.forEach element.find('input'), (input) ->
  $input = angular.element(input)
  name = $input.attr('name')
  console.log name, "=>", $input.attr('ng-model')

Но $input.attr('ng-model')просто показывает мне название назначенной модели. Я мог бы передать весь объект в директиву и получить доступ к свойству оттуда, например, myModel[$input.attr('ng-model').replace("myController.", "")]но это кажется неэффективным.

Автор: Andi Giga Источник Размещён: 14.03.2017 04:59

Ответы (1)


0 плюса

1493 Репутация автора

Получение объема формы:

$form = element.find('form')
formName = $form.attr('name')
formScope = $form.scope()[$form.attr('name')]

Все угловые клавиши имеют только $остальные модели:

keys = Object.keys(formScope).filter( (key)-> return key.indexOf('$') == -1 ).filter( (key)-> return formScope[key].$modelValue? )
if keys.length > 0
  console.log "#{formName} is set dirty"
  formScope.$setDirty(true)
Автор: Andi Giga Размещён: 21.03.2017 11:00
Вопросы из категории :
32x32