Отправка угловой формы не работает в цикле ng-repeat

#angularjs

#angularjs

Вопрос:

Если я отправляю форму в цикле ng repeat, значение формы не передается.

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

в контроллере :

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

Но если я оставлю форму вне цикла, тогда я получу значение в консоли. В чем проблема в моем коде

Комментарии:

1. удалите тег формы в n-repeat и напишите ng-click=»addReply(com.id )» в кнопке ответа. com.id является динамичным. используйте только 1 тег формы вне тега списка

Ответ №1:

Вы используете единственное значение вашей $scope.rbody переменной: следовательно, оно заменяется на каждой итерации ng-repeat.

Чтобы устранить эту проблему, просто прикрепите ng-model форму к текущей итерации ng-repeat, например:

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

тогда в вашем контроллере вы сможете получить каждое вставленное значение вашего массива:

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