我遇到了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);
};
答案 0 :(得分:0)
好吧,我找到了一个解决方法,但我仍然不知道它为什么不起作用,所以如果有人可以写一个解释,我会非常感激。
我的解决方案是每次在视图之间切换时打开和关闭模板。