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>

更新

  • 使用angular的服务
  • 在回调中设置$scope.items
  • 谢谢西尔文和陈子林


    我是一个说有限英语的新手。这可能是一个非常简单的问题

    我试图在数据更改时显示项目列表。但是,我看不到列表,除非我在运行代码之前初始化了这些项

    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)