我遇到一个问题,即ng-repeat表没有反映服务器的更新。顺序如下:
初始加载的网页会调用$scope.$on
来调用refreshEpisodeList()
。
refreshEpisodeList()
从服务器获取剧集列表,并使用此列表设置$scope.episodeList
。这已使用ng-repeat="episode in episodeList"
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错误。