我的角度看起来像这样:
<li ng-repeat="n in range(newsList.length)" ng-class="{active: n == paging}" ng-click="setPage()">
<a href ng-bind="n + 1">1</a>
</li>
现在问题出在newsList
,只有在发送$http
请求并收到响应后才会设置范围。像这样:
$http.get('news/listings/' + ($scope.currentPage*$scope.itemsPerPage) + '/' + (($scope.currentPage+1)*$scope.itemsPerPage)).success (response) ->
$scope.newsList = response
真正的问题是,视图首先在设置$scope.newsList
之前渲染,变量在视图中为undefined
。如何告诉视图我只想在li
设置后才能呈现这些$scope.newsList
?
顺便说一下,我在控制器中调用了$http
请求。
修改 在我的控制器中,如果输出$ scope.newsList值
,会发生这种情况$http.get('news/listings/' + ($scope.currentPage*$scope.itemsPerPage) + '/' + (($scope.currentPage+1)*$scope.itemsPerPage)).success (response) ->
$scope.newsList = response
alert $scope.newsList //returns object, which I want
alert $scope.newsList //undefined
再次修改
解决了我的问题,但提出了另一个问题(以及此问题的解决方案):here
答案 0 :(得分:0)
使用空数组初始化$scope.newsList
:
$scope.newList = [];
$http.get(...
或在您的视图中使用ngIf
:
<ul ng-if="newsList.length">
<li
ng-repeat="n in range(newsList.length)"
ng-class="{active: n == paging}"
ng-click="setPage()"
>
<a href ng-bind="n + 1">1</a>
</li>
</ul>
答案 1 :(得分:0)
$resource
服务具有isArray
配置,使其在获取数据之前返回空数组。你能试试这个选项吗?我目前找不到任何文件。
$http.get(url, {isArray : true }).success(someCallback);