web-dev-qa-db-fra.com

Liez les entrées cachées au modèle dans angular

J'ai la forme suivante:

<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>

Je reçois record.fileNo et record.madeSadNo dans SaveRecord mais je n'obtiens pas record.usersId et record.userNameId dans SaveRecord fonction.

Où est-ce que je me trompe?

les valeurs des entrées cachées sont correctes.

32
MRB

Avoir des champs de formulaire masqués n'est pas la Angular. Vous n'avez pas du tout besoin de champs masqués, car toutes les variables de portée (qui ne sont pas dans le formulaire) peuvent être considérées comme des variables masquées.

Quant à la solution, lors de la soumission du formulaire, il suffit de remplir l'objet 'record' avec 'user':

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

En remarque, vous n'avez pas besoin de mentionner votre variable lors de l'appel de la fonction:

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

Vous pouvez utiliser quelque chose comme ceci:

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

Le champ masqué ne prend pas en charge la double liaison.

Utilisez simplement ceci:

<input type="hidden" name="userId" value="{{user.userId}}"/> {{user.userId}}
<input type="hidden" name="UserNameId" value="{{user.userNameId}}"/> {{user.userNameId}}
3
Bappi Datta