2016-10-10 2 views
0

Wenn ich ein Formular in ng wiederholen Schleife wird Formularwert nicht übergeben.Angular Form Submission funktioniert nicht in ng-Repeat-Schleife

<li ng-repeat="com in post.comments">{{ com.body }}   
     <h4>Reply</h4> 
     <form ng-submit="addReply()"> 
      <textarea name="rbody" ng-model="rbody"> </textarea>        
      <button type="submit">Reply</button> 
     </form>  
    </li> 

in Controller:

$scope.addReply = function(){ 
    console.log($scope.rbody); 
}; 

Aber wenn ich außerhalb der Form halten dann Schleife dann ich Wert in der Konsole erhalten. Was ist das Problem in meinem Code

+0

Entfernen Sie Formular-Tag in N-Wiederholung und schreiben ng-click = "addReply (com.id)" in der Antwort-Taste. ** com.id ** ist dynamisch. Verwenden Sie nur 1 Formular-Tag außerhalb des Listen-Tags –

Antwort

1

Sie verwenden einen einzigen Wert Ihrer $scope.rbody Variable: Daher wird es bei jeder Iteration von ng-repeat ersetzt.

um dieses Problem zu beheben, einfach die ng-model der Form heften sich an der aktuellen ng-Repeat-Iteration, zum Beispiel:

<li ng-repeat="com in post.comments">{{ com.body }}   
    <h4>Reply</h4> 
    <form ng-submit="addReply(com)"> 
     <textarea name="rbody" ng-model="com.rbody"></textarea>        
     <button type="submit">Reply</button> 
    </form>  
</li> 

dann in Ihrem Controller werden Sie jeden eingefügten Wert Ihres Arrays erhalten können, :

$scope.addReply = function(comObj){ 
    console.log(comObj.rbody); 
}; 
Verwandte Themen