Javascript ng repeat在更改数据后不更新
更新Javascript ng repeat在更改数据后不更新,javascript,angularjs,Javascript,Angularjs,更新 使用angular的服务 在回调中设置$scope.items 谢谢西尔文和陈子林 我是一个说有限英语的新手。这可能是一个非常简单的问题 我试图在数据更改时显示项目列表。但是,我看不到列表,除非我在运行代码之前初始化了这些项 html代码: <ul ng-controller="testController"> <li ng-repeat="item in items">{{item.description}}<li> </ul>
我是一个说有限英语的新手。这可能是一个非常简单的问题 我试图在数据更改时显示项目列表。但是,我看不到列表,除非我在运行代码之前初始化了这些项 html代码:
<ul ng-controller="testController">
<li ng-repeat="item in items">{{item.description}}<li>
</ul>
使用
$timeout
代替setTimeout
;这样你就可以呆在这个棱角分明的世界里。还可以在回调中设置$scope.items
function testControler($timeout) {
$scope.items = [];
var data = [{description: 'food'}, {description: 'fruit'}]
$timeout(function() { $scope.items = data }, 2000)
}
函数应该在Angular的
$scope.apply()
方法中执行,它将触发$scope.digest()
,并导致数据更改
使用Angular的服务,如$http
,$timeout
,$interval
…,它将自动包装在$scope.apply()
中并执行
但是如果您使用一些本机语言功能,如XMLHttpResquest
,setTimeout
,setInterval
,您的模型更改将不会在$scope.apply()中自动执行。因此,不会发生数据更改
因此,使用$timeout
而不是setTimeout
:
将$timeout
服务注入到Endency
function testControler($timeout) {
将setTimeout
更改为$timeout
$timeout(function() { items = data }, 2000)
不客气。如果您对答案感到满意,请单击旁边的复选标记接受答案。
$timeout(function() { items = data }, 2000)