Javascript 从嵌套的ng repeat获取$id

Javascript 从嵌套的ng repeat获取$id,javascript,angularjs,firebase,angularfire,Javascript,Angularjs,Firebase,Angularfire,我在Angularjs和Firebase中有一个帖子/评论系统,我可以毫无问题地循环显示所有带有ng repeat的帖子及其评论。当我试图从第二个嵌套的ng repeat中获取$id以便能够将回复保存到注释中时,问题就开始了。让我们看看我的代码: <div class="posts" ng-repeat="post in posts"> <div>{{post.text}}</div> <div> <input type="t

我在Angularjs和Firebase中有一个帖子/评论系统,我可以毫无问题地循环显示所有带有ng repeat的帖子及其评论。当我试图从第二个嵌套的ng repeat中获取$id以便能够将回复保存到注释中时,问题就开始了。让我们看看我的代码:

<div class="posts" ng-repeat="post in posts">
  <div>{{post.text}}</div>
  <div>
    <input type="text" placeholder="Comment here..." ng-model="comment">
    <button ng-click="addComment(post, comment)"></button>
  </div>
  <div class="comments" ng-repeat="cmt in post.comments">
    <p>{{cmt.text}}</p>
    <div>
      <input type="text" ng-model="answer">
      <button ng-click="addAnswer(cmt, post)"></button>
    </div>
      <div ng-repeat="answer in cmt.answers">
      <p>{{answer.text}}</p>
      </div>
  </div> 
</div>
为了进行测试,首先我删除addAnswer函数中上面的代码,并编写两个console.log来检查我是否得到了这些值

控制台日志(post.$id)

控制台日志(cmt.$id)

我只收到帖子。$id但没有第二个帖子(未定义),我是否遗漏了关于嵌套ng repeat的内容

已编辑:我更改了代码,以避免以下答案后出现$scope冲突,但仍然不起作用。


欢迎提供任何建议,谢谢:)

comment
被传递到
addAnswer()
中可能不像您所想的那样是ng repeat的实例对象,而可能与上面已经定义的
ng model='comment'
冲突。您有一个范围问题

可以通过将
ng repeat=“comment in post.comments”
更改为
ng repeat=“cmnt in post.comments”
或任何您想命名的名称来解决此问题,只要它不与以前定义的$scope对象冲突

$scope.addComment = function(post, comment){

    var ref = new Firebase("https://url.firebaseio.com/users/" + post.$id + "/comments");

    var comments = $firebaseArray(ref);

    comments.$add({

    text: comment

   });

}

$scope.addAnswer = function(cmt, post){

        var refanswers = new Firebase("https://url.firebaseio.com/users/" + post.$id + "/comments/" + cmt.$id + "/answers");

        var answers = $firebaseArray(refanswers);

        answers.$add({

        text: answer

       });

    }