【问题标题】:ngRepeat doesn't refresh rendered valuengRepeat 不刷新渲染值
【发布时间】:2017-06-20 15:50:24
【问题描述】:

我遇到了 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(例如,我同步了我的列表)但没有帮助。

EDIT : 用于刷新控制器中currentCours 的函数。当在菜单中选择“课程”时调用它。

$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);
};

【问题讨论】:

  • 在此处使用大括号&lt;h2&gt;Classe : {{group.name}}&lt;/h2&gt;
  • 分享更多controllercode ...你不应该使用$apply()imo ...
  • @sachilaranawaka 我们正在开发一个自制的框架,所以我们使用括号而不是花括号。
  • @daan.desmedt 控制器比较复杂,就是一堆数据同步功能,不知道有没有用。但如果你想要一些具体的东西,也许我可以分享。
  • 如果您谈论的是串联结果 - 我想您的控制器内部正在发生一些事情......但是如果没有检查代码的能力就很难帮助您......

标签: angularjs scope angularjs-ng-repeat


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2017-03-05
    相关资源
    最近更新 更多