2014-08-30 1 views
0

У меня есть поле ввода, которое будет заполнено информацией о пользователях, если эти данные доступны (адрес электронной почты, имя и т. Д.)Использовать ng-модель на поле ввода, которое имеет значение, заданное из другой модели Угловая

Я устанавливаю значение поля ввода с помощью $ scope.userData изначально, и когда я устанавливаю атрибут ng-model в поле ввода, значение на интерфейсе будет пустым.

Пример:

Works, чтобы показать значение (поле ввода имеет пользователей электронной почты:

<input class="text-input" type="email" value="{{data.email}}"> 

не работает (пустое поле ввода):

<input class="text-input" type="email" ng-model="formData.email" value="{{data.email}}"> 

I почему это не работает, formData.email пуст, и, похоже, модель перезапишет значение, но я чтобы сохранить это в formData, чтобы затем отправить запрос POST на мой сервис после отправки формы.

Я новичок в угловом и хотел бы сделать это с угловым, а не с помощью jQuery в качестве костыля.

Так как бы установить поле электронной почты для модели, используемой во время отправки формы, но заполнить значение поля электронной почты исходными данными электронной почты, если они есть?

ответ

-1

AngularJS использует двустороннюю привязку.

Это означает, что если вы напишете что-то на входе с ng-model="formData.email", значение области изменится, и в контроллере оно будет доступно как $scope.formData.email. И если вы измените значение $scope.formData.email в контроллере, оно автоматически обновит значение <input />.

Чтобы установить адрес по умолчанию, вы должны удалить атрибут value из ввода и установить значение $scope.formData.email в JavaScript в начале контроллера.

Я рекомендую вам ознакомиться с официальным номером basic tutorial. Здесь очень хорошо описано.

1

То, что вы хотите сделать, это выполнить следующий код при загрузке формы:

formData.email = data.email

Угловая имеет метод ngInit для этой цели. Предположим, вы создали функцию где-то, называемую initializeEmail, которая делает это. Затем нужно будет добавить что-то вроде этого внутри тега формы (или в любом месте, которое знает, что FormData есть):

<form ng-init="initializeEmail(data.email)>

Затем, когда угловые нагрузки вверх он будет видеть эту функцию и установить электронную почту в FormData в поле надлежащим образом.

+0

Невозможно найти документацию по ng-нагрузке. Я добавил функцию initEmail к моему контроллеру, поэтому спасибо за эту идею. –

+0

My bad, ngInit, а не ngLoad. Я соответствующим образом обновил свой ответ. – Hanra091