更新
我是Angular的新手,说英语有限。这可能是一个非常简单的问题。
我正在尝试在数据更改时显示项目列表。但是,我没有看到列表,除非我在运行代码之前初始化项目。
html代码:
<ul ng-controller="testController">
<li ng-repeat="item in items">{{item.description}}<li>
</ul>
js code:
function testControler() {
var items = []
var data = [{description: 'food'}, {description: 'fruit'}]
setTimeout(function() { items = data }, 2000)
$scope.items = item
}
答案 0 :(得分:1)
使用$timeout
代替setTimeout
;这样你就可以留在棱角分明的世界里。同时在回调中设置$scope.items
。
function testControler($timeout) {
$scope.items = [];
var data = [{description: 'food'}, {description: 'fruit'}]
$timeout(function() { $scope.items = data }, 2000)
}
答案 1 :(得分:0)
函数应该在Angular的$scope.apply()
方法中执行,它将触发$scope.digest()
并导致数据更改。
使用Angular的服务,例如$http
,$timeout
,$interval
...,它会自动包含在$scope.apply()
中并执行。
但是,如果您使用某些母语功能,例如XMLHttpResquest
,setTimeout
,setInterval
,您的模型更改将不会在$scope.apply()
中自动执行。因此,数据不会发生变化。
$timeout
代替setTimeout
:注入$timeout
服务依赖
function testControler($timeout) {
将setTimeout
更改为$timeout
$timeout(function() { items = data }, 2000)