Angular:ng-show陈旧状态

时间:2014-12-04 06:36:38

标签: javascript angularjs ng-show

点击按钮,我正在使用ng-show来显示div。

div ng-show - ing包含课程安排,其中包含动态更新的课程,用户点击并添加课程。

但是当这个课程计划被触发显示时,它处于陈旧状态。没有课程出现。

有关为什么所有添加的课程数据实际上没有显示的任何见解?在ng-show刷新数据状态后,是否需要执行一些特殊操作?

HTML:

    <div id="schedule-div" ui-calendar="uiConfig.calendar" ng-model="eventSources" ng-show="scheduleMode" calendar="weekView"></div>

JS:

// Event handle for "Generate Schedule" button
$scope.getSchedules = function () {
    scheduleFactory.getSchedules($rootScope.addedCourses).
        success(function (data) {
            var scheduleListing = angular.fromJson(data);

            // Create closure with current scheduleListing
            scheduleInstance = renderSchedule(scheduleListing);
            scheduleInstance(0);

            // $scope.events is the data used
            // This log correctly, logs data
            console.log($scope.events);

            // Toggle the ng-show
            $scope.scheduleMode = true;

        }).
        error(function() {
            $window.alert("Schedules not found.");
        });
};

正如您所看到的,这一切都发生在来自服务器的回调中(我不认为这应该重要)。 console.log()正确显示数据,因此在切换ng-show时数据确实存在

ng-show逻辑完全删除后,数据在计划视图中正确更新。所以问题必须在ng-show显示陈旧状态的某处。

3 个答案:

答案 0 :(得分:0)

检查您的数据来源。 ng-show不关心内容。它只是使容器显示:无或显示:基于条件阻止。

您的数据源未获得更新。

如果您有任何示例而不是发布。

答案 1 :(得分:0)

代码

之后
// Toggle the ng-show
$scope.scheduleMode = true;

添加

$scope.apply()

答案 2 :(得分:0)

您正在使用ng-model=eventSources在日程表列表中设置数据。它似乎没有更新,因为eventSources代码中没有使用变量getSchedules()。这可以控制div内的更新内容。

ng-show仅显示或隐藏div,不控制其中任何其他内容。