使用来自ng-repeat的数据动态绑定ng模型(Angular 1.5.7)

时间:2016-07-17 12:03:40

标签: javascript angularjs

****编辑:问题解决了! Neuronet的解决方案就是答案:

<div ng-repeat="post in $ctrl.posts">
<textarea class="postBox"  ng-model="$ctrl.comment.content" name="content" /></textarea>
<input type="submit" id="submit" value="Submit" ng-click="$ctrl.postCommentSubmit(post.id)" />
</div>

以下是我的原帖:

过去3个小时我一直在解决这个问题。我有一系列帖子,我已经从我的控制器传递到我的模板,名称为&#34; posts&#34;。帖子中的每个帖子都是一个包含各种键值对的数组,例如&#34; id&#34; (值为整数),&#34;内容&#34; (值是一个字符串)等。我想包含一个表单来发送一个PostComment帖子到我的api。 PostComment帖子要求我发送一个外键(代表相关帖子)和一个内容字段。我希望从ng-repeat动态获取外键。

我的模板如下所示:

            <div ng-repeat="post in $ctrl.posts">
              ....
              <form ng-submit="$ctrl.postCommentSubmit()">

                <input class="hidden" type="text" ng-model="$ctrl.postCommentArray.postForeignKey" value="{{ post.id }}" name="postid"  /> 
                <textarea class="postBox"  ng-model="$ctrl.postCommentArray.content" name="content" /></textarea>
                <input type="submit" id="submit" value="Submit" />

              </form>

            </div>

我的控制器的相关部分如下所示:

self.postCommentArray = {
        content: '',
        postForeignKey:  '',
      };

我试图从post.id获取外键(&#34;帖子&#34;来自ng-repeat中的$ ctrl.posts中的帖子)。我似乎无法找到一种方法来做到这一点。我试过了两个值=&#34; {{post.id}}&#34;和ng-value =&#34; {{post.id}}&#34;但由于各种原因都不起作用。 Ng值仅适用于无线电,但我无法自动检查选项,并且值不能与ng-model一起使用,因为它们都在竞争设置值。

对于任何可以帮助我的人,我都非常感激。

2 个答案:

答案 0 :(得分:2)

你为什么使用CommentArray?只需使用评论作为您的模型 您可以在postCommentSubmit

中传递帖子ID
<div ng-repeat="post in $ctrl.posts">
<textarea class="postBox"  ng-model="post.comment.content" name="content" /></textarea>
<input type="submit" id="submit" value="Submit" ng-click="$ctrl.postCommentSubmit(post.id)" />
</div>

答案 1 :(得分:0)

我建议您在控制器中使postCommentSubmit函数看起来像这样:

    $ctrl.postCommentSubmit = function (post, foreign_id) {
        $http.post('/api', {
            "post_comments": post["post_comments"],
            "user": post["user"],
            "timestamp": post["timestamp"],
            "updated": post["updated"],
            "content": post["content"],
            "post_likes": post["post_likes"],
            "id": post["id"],

            "foreign_id": foreign_id
        })
    }

然后在你的html ng-submit:

<form ng-submit="$ctrl.postCommentSubmit(post, $ctrl.postCommentArray.postForeignKey)">