角度表单提交在ng-repeat循环中不起作用

时间:2016-10-10 09:58:22

标签: 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 个答案:

答案 0 :(得分: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);
};