当我更改值时,重复不刷新 - AngularJS

时间:2014-01-17 15:51:02

标签: angularjs angularjs-ng-repeat

我正在为一个日历做一个应用程序,我创建了一个函数,每次更改我的变量的值“$ scope.days”,当我使用版本1.0时没有给出错误,但现在ngRepeat没有刷新,新值转到变量,但ngRepeat不显示新结果......

$scope.loadMonth = function()
{
    $scope.titleCalendar = $scope.months[$scope.month-1].name + ' ' + $scope.year;
    getTotalFebruary($scope.year);

    var dtString = $scope.year + '/' + $scope.month + '/' + 1,
    date        = new Date(dtString),
    day         = 1,
    weekday     = date.getDay(),
    totalDays   = $scope.months[date.getMonth()].qty + date.getDay();

    $scope.days = [];

    for(var i = 0; i < totalDays; i++)
    {
        if(i < weekday)
            $scope.days.push('');
        else
            $scope.days.push(day++);
    }
};

我的HTML:

<div class="day" ng-repeat="day in days"><p>{{ day }}</p></div>

如果我在推送新值后发出警报,我可以看到新值,但我的ngRepeat不会刷新结果,我已经尝试了很多东西但是没有用。有人知道解决方案吗?

1 个答案:

答案 0 :(得分:0)

根据您提供的少量代码示例,我不确定您是否理解您要实现的目标,但如果您查看此示例,则每次单击“单击我”文本时都会看到它应该更新显示,只需输入1,2或3在输入区域。你可能想检查你的循环逻辑。

<html lang="en-US" ng-app="mainModule">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.4/angular.min.js"></script>

</head>
<body>
    <div ng-controller="mainController">
        <input type="text" ng-model="monthModel" placeholder="enter 1 2 or 3"/>
        <h1 ng-click="loadMonth(monthModel)">Click Me to Repeat</h1>         
        <span class="day" ng-repeat="day in days">{{ day }} , </span>
    </div>
    <script type="text/javascript">
        var app = angular.module("mainModule", []);

        app.controller("mainController", function ($scope) {
        //$scope.monthModel = 1; // default some date
        $scope.year = "2014";
        $scope.months = [
                        {"name":"January", "qty":10},
                        {"name":"February", "qty":5},
                        {"name":"March", "qty":10},                     
                        ];
        $scope.loadMonth = function(monthModel)
        {
            $scope.month = monthModel;
            $scope.titleCalendar = $scope.months[$scope.month-1].name + ' ' + $scope.year;
            //getTotalFebruary($scope.year);        

            var dtString = $scope.year + '/' + $scope.month + '/' + 1,
            date        = new Date(dtString),
            day         = 1,
            weekday     = date.getDay(),
            totalDays   = $scope.months[date.getMonth()].qty + date.getDay();

            $scope.days = [];

            for(var i = 0; i < totalDays; i++)
            {
                //if(i < weekday)
                //  $scope.days.push('');
                //else
                    $scope.days.push(day++);

                console.log($scope.days) ;
            }
        };
        });
    </script>
</body>
</html>