如何在更改数据后重新启动ng-repeat

时间:2014-02-05 15:02:30

标签: angularjs angularjs-ng-repeat

我的控制器是

function calendarEventsController($scope) {
    var angUserEvents = [];

     // get data to array from json

    $scope.returnUserEvents = function(userDate){
     for (var i = 0; i <= angUserEvents.length-1; i++){
        if (angUserEvents[i].start == $.datepicker.formatDate('yy-mm-dd', userDate))
        {
            var dateToShow = angUserEvents[i];
            $scope.userEvents = dateToShow;
            //return;

        }   
     };
}; 

    $scope.userEvents = angUserEvents;
};

好的,它运作良好。检查此控制器的范围,我看到对象列表userEvents,它由ng-repeat成功呈现。

<ul>
             <li ng-repeat="userEvent in userEvents">
                    {{userEvent}} 

             </li>
    </ul>

在此之后,我通过$scope.returnUserEvents在控制器中操作此列表,选择其中的一个对象。为了确保数据正常,我再次检查控制器的范围,我看到长度userEvents已经改变 - 这就是我需要的。

在此之后,我认为ng-repeat必须重新呈现(因为$scope.userEvents已被更改),但事实并非如此。

1 个答案:

答案 0 :(得分:3)

如果您在$ digest周期之外更新了userEvents,则需要调用

scope.$apply()