形成ng-repeat

时间:2015-11-02 05:57:48

标签: angularjs angularjs-ng-repeat angularjs-ng-click

观点:

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

5 个答案:

答案 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。