在http post成功后,$ scope.push()不会更新ng-repeat

时间:2016-05-18 20:11:25

标签: javascript angularjs angularjs-scope angularjs-ng-repeat

我试图在$ http.post成功后在我的视图上更新DOM(ng-repeat)(调用$ http.get),但它不起作用。

我使用ng-click调用我的$ http.get测试它确实更新了DOM,所以我很困惑发生了什么。

这是我的$ http.post:

 $scope.save = function(){
    //url, data and config here...
    $http.post(url, data, configPost).then(function(data) {
    if(data.status == 200){

      if ($scope.formData.comment) {
        $scope.formData.comment = '';
        $scope.response.push(initget()); // this is where I'm calling the $http get
      }

    } else {
      console.log('post error');
    }
  });
};

我使用以下函数进行了测试,它在$ http.post:

之外工作
$scope.updateDOM = function() {
    $scope.response.push(initget());
};

<a href="#" ng-click="updateDOM()">update dom</a>

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果我提交(发布)一些数据后我想正确使用剩余数据刷新视图 我想你可以试试:

$http.get('/someUrl', config).then(function(data){$scope.response = data;})

在POST调用的回调成功中而不是推送。即代替:

$scope.response.push(initget());

P.S。我假设你在$ scope.response上使用ng-repeat。

答案 1 :(得分:1)

问题是因为“ng-controller”在html模板中被定义了两次。