AngularJS范围通过restangular刷新到API

时间:2014-05-04 13:55:33

标签: angularjs angularjs-scope

我有一个控制器,它通过Restangular加载数据,如下所示:

var oneTopic = Restangular.one('topics', topic.id);
oneTopic.get({}, {"Authorization" : localStorageService.get('***')}).then(function(topic) {
  topic.getList('comments', {}, {"Authorization" : localStorageService.get('***')}).then(function(comments){
    $scope.comments = comments;
    //console.log($scope.comments);
  });
});

然后是一个发布新评论的函数和一个删除评论的函数。

    $scope.delComment = function(comment_id, author_id){
      var comment = Restangular.one('comments', comment_id);
      comment.remove({author_id: author_id}, {"Authorization" : localStorageService.get('***')}).then(function(){
        // need to perform refresh here
      });
    };

    $scope.postComment = function(mood) {
      $scope.commentData.mood = mood;
      comments.post($scope.commentData, {}, {"Authorization" : localStorageService.get('***')}).then(function(response){
        // need to perform refresh here
      }, function(response){
        $scope.error = response.data.message;
      })
    };

如何在不重新加载页面的情况下刷新评论范围?正在使用

在HTML中填充数据
<div ng-repeat="comment in comments">

1 个答案:

答案 0 :(得分:2)

修改$scope.comments引用的现有数组,数据绑定将处理它。

例如:

$scope.delComment = function(comment_id, author_id) {
  var comment = Restangular.one('comments', comment_id);
  comment.remove({ author_id: author_id }, { "Authorization": localStorageService.get('***')
  }).then(function() {

    // Some remove-from-array implementation, for example:

    var c = $scope.comments; 

    for(var i = 0, l = c.length; i < l; i++) {
      if (c[i].comment_id === comment_id) {
          c = c.splice(i, 1);
          break;
      }
    }
  });
};