说,我有以下代码:
<div ng-controller="postsController">
<div id = "post_id_{{post.postid}}" class = "post" ng-repeat="post in posts">
......
<div class="comments">
<div><span>{{post.totalcomments}}</span> Comments</div>
</div>
.......
</div>
</div>
并在页面加载时评估为:
<div ng-controller="postsController">
<div id = "post_id_1" class = "post">
......
<div class="comments">
<div><span>3</span> Comments</div>
</div>
.......
</div>
<div id = "post_id_2" class = "post">
......
<div class="comments">
<div><span>6</span> Comments</div>
</div>
.......
</div>
....and so on.....
</div>
当特定帖子的post.totalcomments值发生变化时,我怎么能(使用不同的控制器?)更新DOM?我已经得到了后端,并且知道你可以使用$ timeout来让控制器重复一遍。我会用这样的jQuery(凌乱但很容易)这样做(例如:帖子#1有新的评论):
var newtotal = 4; //but really get the value from ajax call
$("#post_id_1 .comments span").html(newtotal)
但是我如何使用Angular?每次我检查服务器的更新时,我都不想重新显示所有帖子和数据。只需要一个控制器(刷新$ timeout),只根据需要更新已更改的字段。
由于
答案 0 :(得分:0)
如果你想定期刷新数据,请使用$ interval而不是timeout,如果它在某个perios之后只有一次说10秒使用$ timeout。而且你不需要为此编写单独的控制器。这可以在同一个控制器中完成。 一个简单的间隔演示,给你, 示例演示:http://plnkr.co/edit/fj6crcHkxm6rkwJT9eGg?p=preview
JS: app.controller(&#39; MainCtrl1&#39;,function($ scope,$ timeout,$ http,$ interval){ $ scope.comments = [{ 总数:3, 评论:&#39;一些评论1&#39; },{ 总数:10, 评论:&#39;其他一些评论&#39; }];
$interval(function(){
//logic to update comments
$scope.comments[0].total++;
},1000);
$scope.updateCount = function(){
$scope.comments[1].total++;
};
});