2013-11-28 11 views
30

Ho seguente forma:ingressi Bind nascosto per modellare in angolare

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

ottengo record.fileNo e record.madeSadNo in SaveRecord funzione, ma non ottengo record.usersId e record.userNameId in SaveRecord funzione.

Dove sto sbagliando?

i valori degli ingressi nascosti sono corretti.

+3

voto Perché verso il basso? :) – MRB

risposta

36

Avere campi del modulo nascosti non è il modo angolare. Non hai bisogno di campi nascosti, poiché tutte le variabili scope (che non sono nella forma) possono essere prese come variabili nascoste.

Per quanto riguarda la soluzione, mentre l'invio del modulo, basta compilare il 'record' oggetto con 'utente':

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

Come nota a margine, non è necessario parlare la vostra variabile durante la chiamata della funzione :

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

Sì, finalmente l'ho fatto, con un approccio simile – MRB

+2

Non so se è un'affermazione accurata .. "Le variabili nascoste non sono un modo angolare" .. cosa succede se ho uno schema di autorizzazione, e in base all'utente che accede al sito, l'input nascosto è ciò che determina quel valore? Preferisco non fare alcuna autorizzazione nel mio javascript, ma lascia che sia il mio punto di vista a gestirlo. – sksallaj

3

Il campo nascosto non supporta il doppio legame.

Basta usare questo:

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

Ma voglio ottenere 'usersId' e' userNameId' come campi del parametro 'record' di' SaveRecord (record) ' – MRB

+0

Ho aggiornato la mia risposta. Ora prova per favore. –

+0

non funziona. perché attributo nome? – MRB

20

si può usare qualcosa di simile:

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

Mi piace. Ovviamente non è necessario utilizzare i campi nascosti, dato che potrei semplicemente compilare la directory dall'ambito .... ma quando uno ha una pagina e tutte le altre variabili del modulo provengono da elementi del modulo ... i campi nascosti aiutano a mantenere il codice pulito e coerente –

+0

ng-init era la chiave, non vorrei popolare i campi nel mio controller/servizio in quanto ciò non aiuta per la riusabilità. Nel mio caso, utilizzo una funzione di invio in due punti, uno in cui tutti i dati provengono già dal modulo, quindi perché rendere la funzione brutta? :) – a7omiton