2013-11-28 2 views
30

Я следующий вид:Bind скрытые входы модели в угловом

<form name="frmInput"> 

    <input type="hidden" ng-model="record.usersId" value="{{user.userId}}"/> 
    <input type="hidden" ng-model="record.userNameId" value="{{user.userNameId}}"/> 
    <label for="fileNo">AccountId</label> 
    <input id="fileNo" ng-model="record.fileNo" required/> 
    <label for="madeSad">MadeSad</label> 
    <input id="madeSad" ng-model="record.madeSadNo" required/> 

    <button ng-disabled="!frmInput.$valid" ng-click="SaveRecord(record)">Accept</button> 

</form> 

record.fileNo я и record.madeSadNo в SaveRecord функции, но я не получаю record.usersId и record.userNameId в SaveRecord функции.

Где я делаю ошибку?

значения скрытых входов являются правильными.

+3

Почему вниз голосования? :) – MRB

ответ

36

Имея скрытые поля формы не Угловой путь. Вам вообще не нужны скрытые поля, так как все переменные области видимости (которые не входят в форму) могут рассматриваться как скрытые переменные.

Что касается решения, в то время отправки формы, просто заселить «запись» объекта с «пользователь»:

function SaveRecord(){ 
    $scope.record.usersId = $scope.user.userId; 
    $scope.record.userNameId = $scope.user.userNameId; 
    http.post(url, $scope.record); 
} 

Как примечание стороны, вам не нужно упоминать переменную при вызове функции :

<button ng-disabled="!frmInput.$valid" ng-click="saveRecord()">Accept</button> 
+0

Да, наконец, я сделал это с аналогичным подходом – MRB

+2

Я не знаю, является ли это точной формулировкой .. «скрытые переменные не являются угловыми». Что делать, если у меня есть схема авторизации, и в зависимости от пользователя, входящего на сайт, скрытый ввод определяет это значение? Я бы предпочел не делать авторизации в своем javascript, но пусть мой взгляд обработает его. – sksallaj

3

Скрытое поле не поддерживает двойное связывание.

Просто используйте:

<input type="hidden" name="userId" value="{{user.userId}}"/> {{user.userId}} 
<input type="hidden" name="UserNameId" value="{{user.userNameId}}"/> {{user.userNameId}} 
+0

Но я хочу получить 'usersId' и' userNameId' в качестве полей параметра 'record'' SaveRecord (запись) ' – MRB

+0

Я обновил свой ответ. Теперь попробуйте пожалуйста. –

+0

не работает. почему атрибут name? – MRB

20

Вы можете использовать что-то вроде этого:

<input type="hidden" ng-model="record.usersId" value="{{user.userId}}" ng-init="record.usersId=user.userId"/> 
+1

Мне это нравится. Конечно, использование скрытых полей не требуется, так как я мог просто заполнить каталог из области ... но когда у вас есть страница и все другие переменные формы приходят из элементов формы ... скрытые поля помогают сохранить код в чистоте и согласованном –

+0

ng-init был ключевым, я бы не хотел заполнять поля в моем контроллере/службе, поскольку это не помогает для повторного использования. В моем случае я использую функцию отправки в двух местах, где все данные уже получены из формы, поэтому почему функция уродлива? :) – a7omiton