AngularJS使用新数据更新特定字段

时间:2014-06-05 03:14:00

标签: javascript html angularjs

说,我有以下代码:

<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),只根据需要更新已更改的字段。

由于

1 个答案:

答案 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++;
  };

});