ngRepeat不刷新渲染值

时间:2017-06-16 09:16:00

标签: angularjs scope angularjs-ng-repeat

我遇到了ngRepeat的问题:

我想以两种不同的方式显示学生名单。在第一个中,它们按组过滤,而在第二个中它们不被过滤。 整个显示非常复杂,我使用带有模板的ngInclude来显示每个学生。我可以通过更改bClasseVue切换视图,每个切换后跟$scope.$apply()

<div ng-if="currentCours.classesOfGroup !== undefined" 
     ng-show="bClassesVue">
    <div ng-repeat="group in currentCours.classesOfGroup">
        <br>
        <h2>Classe : [[group.name]]</h2>
        <div class="list-view">
            <div class="twelve cell" 
                 ng-repeat="eleve in group.eleves | orderBy:'lastName'" 
                 ng-include="'liste_eleves.html'">
            </div>
        </div>
    </div>
</div>

<div class="list-view" ng-show="!bClassesVue">
    <div class="twelve cell" 
         ng-repeat="eleve in currentCours.eleves.all" 
         ng-include="'liste_eleves.html'">
    </div>
</div>

我的问题发生在我的学生名单发生变化时(currentCours此处)。两个列表不是刷新ngRepeat,而是连接,但仅限于未过滤的视图。

我尝试在战略位置添加一些$scope.$apply(例如我同步我的列表),但它没有帮助。

编辑:用于刷新控制器中currentCours的函数。在菜单中选择“cours”时会调用它。

$scope.selectCours = function (cours) {

    $scope.bClassesVue = false;
    $scope.currentCours = cours;
    $scope.currentCours.eleves.sync().then(() => {

         if ($scope.currentCours.classe.type_groupe === 1) {
             let _elevesByGroup = _.groupBy($scope.currentCours.eleves.all, function (oEleve) {
                  return oEleve.className;
              });
              $scope.currentCours.classesOfGroup = [];
              for(let group in _elevesByGroup) {
                  $scope.currentCours.classesOfGroup.push({
                       name: group,
                       eleves: _elevesByGroup[group]
                  });
               }
               $scope.bClassesVue = true;
          }
    });
    utils.safeApply($scope);
};

1 个答案:

答案 0 :(得分:0)

好吧,我找到了一个解决方法,但我仍然不知道它为什么不起作用,所以如果有人可以写一个解释,我会非常感激。

我的解决方案是每次在视图之间切换时打开和关闭模板。