我有一系列评论。对于每个评论,我都有一个隐藏的表单,您可以回复。数组的每个对象中的该项称为: comment.showSubCommentForm 。当我点击回复时,我希望能够回复评论和名为 commentOnSubPost 的功能。
我将数据加载到10块(延迟加载)中,我正在使用无限滚动距离Angular模块。每当我到达页面末尾时,我会得到接下来的10个项目并将它们添加到$ scope.comments数组中,您可以在下面看到我在 上运行我的ng-repeat。
问题是,虽然 commentOnSubPost 工作得非常好,因为它添加了对评论的回复,我重新加载了数据,因此我可以使用新的回复获取更新的$ scope.comments 。但是 - 因为我已经实现了延迟加载,如果说我在第20页,我该怎么做呢?
我查看了一些类似的帖子,但他们的方法与我的方法截然不同,所以我很丢失。
我的HTML:
<div infinite-scroll='loadMore()' infinite-scroll-distance='1'>
<div class="row">
<div ng-repeat="comment in comments track by $index">
<ul class="comments">
<li class="clearfix">
<a ng-href="#">SomeLink</a>
<div>
<p >{{ comment.date }} <a ng-href="/wall#/profile/main/{{ comment.userID }}">{{ comment.fullname }}</a> says <i class="commentReply"><a href ng-click="comment.showSubCommentForm = !comment.showSubCommentForm"><small>Reply</small></a></i></p>
<p class="mainComment">
{{ comment.comment }}
<p class="meta"><i class="showReply"><a href ng-click="comment.showReplies = !comment.showReplies"><small>Show Replies</small></a></i></p>
</p>
</div>
<div ng-show="comment.showSubCommentForm">
<form ng-submit="commentOnSubPost( post._id, comment._id, subComment)">
<div class="form-group">
<div class="form-group">
<textarea ng-model="subComment" class="form-control" placeholder="Reply to the above comment"></textarea>
</div>
<input type="submit" value="Reply">
</div>
</form>
<div ng-show="comment.showReplies" ng-repeat="subComment in comment.subComments track by $index">
<ul class="comments">
<li class="clearfix">
<a ng-href="/wall#/profile/main/{{ comment.userID }}"><img ng-src="{{ subComment.profilePic }}" class="avatar" style="border-radius: 50%"></a>
<div class="post-subComments">
<p class="meta">{{ subComment.date }}<a ng-href="SomeLink"> {{ subComment.fullname }}</a></p>
<p>
{{ subComment.comment }}
</p>
</div>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
我不会在这里添加太多信息,因为我不想超载此帖,但如果您需要任何特定信息,请告诉我。我只需要知道如何重新加载数据(或者如果还有其他方法),以便我可以获得最新数据。
我希望这是有道理的。
提前致谢!
答案 0 :(得分:0)
就像你有$ scope.comments = [];然后在每次调用时,您只需将即将到来的数据附加到此数组。 像$ scope.comments = $ scope.comments.concat(response.data); 通过这种方式,延迟加载将起作用。
答案 1 :(得分:0)
我通过创建一个Node路由来修复它,它返回了我刚刚添加的确切注释。然后,我在我的$ scope.comments中找到了commentID,并将其作为我在本地的子系统的子组件。
它完成工作,数据是真实的。一个缺点是,如果在那个时候还有其他评论,那么在页面刷新之前它不会出现,但我对此并不太感兴趣。