观点:
<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)。
答案 0 :(得分:0)
而不是使用<form>
标记
尝试<div ng-form="your_form_name">
答案 1 :(得分: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>
答案 2 :(得分:0)
您不得声明$scope.new_comment
。
试试这个:
$scope.new_comment = {}; //right after your controller starts.
答案 3 :(得分:0)
控制器无法访问new_comment.comment
因为ng-repeat
创建了自己的范围。如果在控制器中定义它,则所有注释输入字段都将绑定到同一模型。
最简单的解决方案是使用函数传递注释值。
addComment (x.id, new_comment.comment)
答案 4 :(得分:0)
请使用li来包装所有html并在li而不是ul上应用ng-repeat。