今天遇到了一个问题,angularjs 在一个树结构,也就是多重ng-repeat中。树节点的点击事件是刷新右侧的列表,但是点击完以后,需要再次单击才会刷新上一次的数据,不能实时更新。用到了$timeout,不知道跟它有没有关系。最后的解决办法是,发送请求成功以后,用$apply()包裹起来,如下所示:
$scope.$apply(function(){
$scope.roomitems = result.items;
//获取章节
$scope.totalcount = result.totalCount;
console.log(result);
$scope.apages = Math.ceil($scope.totalcount / $scope.apageSize); //分页数
var count = 0;
for (var n in $scope.roomitems) {
if ($scope.roomitems.hasOwnProperty(n)) {
count++;
}
}
$scope.selpagecount = count;
if ((count == 0) && ($scope.selPage != 1)) {
$scope.selPage = $scope.selPage - 1;
$scope.settable();
return true;
}
if ($scope.selPage <= 2) {
$scope.pageList = [];
$scope.newPages = $scope.apages > 5 ? 5 : $scope.apages;
//分页要repeat的数组
for (var i = 0; i < $scope.newPages; i++) {
$scope.pageList.push(i + 1);
}
}
if ($scope.selPage > 2) {
//因为只显示5个页数,大于2页开始分页转换
if ($scope.selPage < ($scope.apages - 1)) {
var newpageList = [];
for (var i = ($scope.selPage - 3); i < (($scope.selPage + 2) > $scope.apages ? $scope.apages : ($scope.selPage + 2)); i++) {
newpageList.push(i + 1);
}
$scope.pageList = newpageList;
}
else {
var newpageList = [];
for (var i = $scope.apages; i > ($scope.selPage > 5 ? $scope.apages - 5 : 0); i--) {
//console.log(i);
newpageList.push(i);
newpageList.sort(function (m, n) {
return m - n;
});
}
$scope.pageList = newpageList;
}
}
});