2015-11-02 35 views
0

瀏覽:形式在NG-重複

<ul ng-repeat="x in posts.post"> 
    {{x.name}} {{x._id}} {{x.post}} {{x.user_id}} 
    <br> 
    <form> 
     <textarea ng-model='new_comment.comment' name="comment" rows="4" cols="50"> 
     </textarea> 
     <br> 
     <input type="submit" value="Post Comment!" ng-click="addComment(x._id)" > 
    </form> 
</ul> 

這裏的控制器:

$scope.addComment = function(id) { 
    postFactory.addComment(id, $scope.new_comment, function() { 
     postFactory.getComment(function (data) { 
      $scope.comments = data; 
     }); 
     $scope.new_comment = {}; 
    }); 
}; 

這裏的工廠:

factory.addComment = function(id, info, callback) { 
    console.log(info); 
    $http.post("/saveComment/" + id , info).success(function() { 
     comments.push({name: info.name, age: info.description, category: info.category}); 
     callback(comments); 
    }); 
}; 

我這裏有這些代碼。當我的控制器/工廠包裝在ng-repeat標籤中時,表單不會輸出任何東西,但是當我刪除它時,它會輸出我想要的內容。但我需要訪問循環的id(x._id)。

+1

是否在控制檯上看到任何錯誤? ,也顯示JavaScript代碼 –

+0

說我未嘗試console.log(信息);在工廠 –

+0

您是否在某處聲明瞭'$ scope.new_comment.comment'? – Fahad

回答

0

控制器無法訪問new_comment.comment因爲ng-repeat創建它自己的範圍。如果你在控制器中定義它,你所有的註釋輸入字段都會綁定到同一個模型。

最簡單的解決方案是將註釋值與函數一起傳遞。

addComment (x.id, new_comment.comment) 
+0

只好修改一下,但addComment(x.id,new_comment)的作品。 –

0

而是採用<form>標籤

嘗試<div ng-form="your_form_name">

0

你應該嘗試這樣

<ul ng-repeat="x in posts.post"> 
    {{x.name}} {{x._id}} {{x.post}} {{x.user_id}} 
    <br> 
    <textarea ng-form="form" ng-model='new_comment.comment' name="comment" rows="4" cols="50"> 
    </textarea> 
    <br> 
    <input type="button" value="Post Comment!" ng-click="addComment(x._id)" > 
</ul> 
+0

試過。仍在輸出'未定義'。我需要在控制器/工廠中使用ng-form ='form'做什麼嗎? –

0

你不能宣佈$scope.new_comment。 試試這個:

$scope.new_comment = {}; //right after your controller starts. 
0

請使用li來包裝您的所有html並在li上應用ng-repeat而不是ul。