AngularJS:如何在设置了$scope.var之后才在视图中设置$scope.var
AngularJS: How to set $scope.var in a view only after the $scope.var is set?
我的角度中有一个视图,看起来像这样:
<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
。如何告诉视图我只想在设置了$scope.newsList
之后渲染那些li
?
顺便说一下,我在生成视图的控制器中调用$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
再次编辑
解决了我的问题,但提出了另一个问题(以及这个问题的解决方案):此处
用空数组初始化$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>
$resource
服务具有isArray
配置,使其在获取数据之前返回一个空数组。你能试试这个选项吗?我现在找不到任何文件。
$http.get(url, {isArray : true }).success(someCallback);
相关文章:
- 如何在多个控制器之间封装设置$scope值
- 在 ng-click 中设置$scope变量指令
- 将服务中的函数绑定到$scope(错误:无法设置undefined的属性'onChange')
- 工厂返回数据后未设置角度$scope
- AngularJS:如何在设置了$scope.var之后才在视图中设置$scope.var
- 设置$scope.parameter,ui路由器
- $scope变量未定义,尽管它是在$watch函数内部设置的
- 为什么从指令中更改外部作用域需要 scope.$apply(),即使我将范围选项设置为 false
- 角度$scope首先设置值而不是服务,然后第二个函数调用一切正常
- 尝试将数据数组设置为从视图调用函数后$scope
- 如何通过角度 ui-grid 中来自$scope的数据动态设置指令
- 无法在 Angular 中设置$scope值
- 如何从变量中设置$scope值$rootScope
- 使用AngularJS中pouchDB的数据设置$scope变量的值
- 从AngularJS中的$http服务设置$scope值的最佳方式
- 通过对数组的迭代设置$scope属性值
- 在服务场景中,在页面加载时设置$scope值的正确方法是什么?
- 用ng重复值设置$scope值的问题是没有更新
- 设置$scope变量AngularJS
- 视图中的 ng 单击表达式设置$scope.var 的值