ng-repeat不反映来自服务器

时间:2016-12-29 00:19:29

标签: javascript angularjs

我遇到一个问题,即ng-repeat表没有反映服务器的更新。顺序如下:

初始加载的网页会调用$scope.$on来调用refreshEpisodeList()

refreshEpisodeList()从服务器获取剧集列表,并使用此列表设置$scope.episodeList。这已使用ng-repeat="episode in episodeList"

成功显示在UI的表格中 通过用户界面调用

updateEpisode()将更改发布到单个剧集。

当邮件到服务器完成后,我再次打电话 refreshEpisodeList()。虽然服务器返回的原始JSON包含更新的信息,但UI上的表未更新

$scope.episodeList = [];


$scope.$on('$viewContentLoaded', function() {
    $scope.refreshEpisodeList();
});

$scope.refreshEpisodeList= function(){

    console.log("refreshing");

    httpService.get('episode/getEpisodeList').then(function(response) { 
        $scope.episodeList = response.data;
    });     
};

//update episode and call refreshEpisodeList (to update ng-repeat table)
$scope.updateEpisode = function() {        

    httpService.post('episode/updateEpisode', $scope.episode).then(function(response) {
        $scope.refreshEpisodeList();                        
    });
  };

httpService是:

app.service('httpService', function($http) {

this.get = function(url) {

    return $http.get(url)
    .success(function(response) {
        console.log(response);
        return response;
    }).error(function() {
        console.log("error");
    });

};  

this.post = function(url, data) {

    return $http.post(url, data)
    .success(function(response) {
        console.log(response);
        return response;
    }).error(function() {
        console.log("error");
    });

};

我已经尝试通过查看之前的stackover问题来调试最近几个小时。我意识到这是一个常见的问题,但我无法让它发挥作用。我试过$scope.$apply但是返回了一个inprog摘要错误。我尝试了$scope.$applyAsync但没有返回错误但也没有更新ng-repeat。我不相信我正在执行angularjs之外的任何任务,我不知道为什么$scope.$apply会与此相关。

我无法想象还有什么可以完成这个看似简单的任务。任何建议表示赞赏。

更新 我做了一些测试。如果我通过按钮点击refreshEpisodeList,则表格会正确更新,但在通过代码动态调用refreshEpisodeList时仍无法正常工作。我发现没有找到任何元素"在updateEpisode函数的位置1:1的firebug中出现JS错误。

0 个答案:

没有答案