2013-04-08 10 views
26

C'è un modo per serializzare la funzione per angularjs?Esiste un modo più efficace per serializzare un modulo con angularjs?

il mio post appare così adesso.

$scope.signup_submit = function() { 
    var formData = { 
    username: $scope.username, 
    full_name: $scope.full_name, 
    email: $scope.email, 
    password: $scope.password, 
    confirm_password: $scope.confirm_password 
    } 

    $http({ 
    method: "POST", 
    url: '/signup', 
    data: formData, 
    }).success(function (data) { 
    if (data.status == 'success') { 
     alert('all okay'); 
    } else { 
     alert(data.msg) 
    } 
    }); 
} 
+1

Hai provato: $ element.serialize()? – StuR

+0

sì, restituisce serializzazione funzione non definita –

+2

Penso che intendesse $ (elemento) .serialize(); Ovviamente dovresti avere JQuery per farlo accadere. – ganaraj

risposta

62

Questo non è il modo in cui è necessario accedere ai dati del modulo utilizzando AngularJS. I dati nel modulo devono essere associati nell'ambito.

Quindi utilizzare un oggetto, ad es. $ scope.formData, che conterrà tutta la struttura dei dati, quindi ognuno degli elementi del modulo dovrebbe essere associato a questo utilizzando ng-model.

es:

http://jsfiddle.net/rd13/AvGKj/13/

<form ng-controller="MyCtrl" ng-submit="submit()"> 
    <input type="text" name="name" ng-model="formData.name"> 
    <input type="text" name="address" ng-model="formData.address"> 
    <input type="submit" value="Submit Form"> 
</form> 

function MyCtrl($scope) { 
    $scope.formData = {}; 

    $scope.submit = function() { 
     console.log(this.formData); 
    }; 
} 

Quando il modulo di cui sopra è presentata $ scope.formData conterrà un oggetto del modulo che possono poi essere passato nella richiesta AJAX. per esempio:

Object {name: "stu", address: "england"} 

Per rispondere alla tua domanda, non c'è miglior metodo per "serializzare" una forma di dati utilizzando AngularJS.

È tuttavia possibile utilizzare jQuery: $ element.serialize(), ma se si desidera utilizzare Angular correttamente, procedere con il metodo precedente.

+3

Questo non funzionerà molto bene quando si hanno più moduli su una pagina, ad es. come parte di una direttiva ng-repeat ... – Kevin

+2

@Kevin cerca in ng-form per i moduli creati dinamicamente (es. come parte di una direttiva ng-repeat) http://scotch.io/tutorials/javascript/building -dynamic-angular-forms-with-ngrepeat-and-ngform –

+0

Ho pensato che la domanda riguardasse la serializzazione del modulo. –

Problemi correlati