Javascript 从嵌套的ng repeat获取$id
我在Angularjs和Firebase中有一个帖子/评论系统,我可以毫无问题地循环显示所有带有ng repeat的帖子及其评论。当我试图从第二个嵌套的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
<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
});
}