我刚刚开始使用 Angular,并且仍在尝试了解它是如何工作的。我有 2 个关于 ng-repeat 列表的问题。我将首先发布我的代码。
HTML
<div class="row">
<div class="span2">
<ul class="nav nav-pills nav-stacked">
<li ng-repeat="class in classes | orderBy:orderProp" ng-class="activeClass">
<a ng-click="loadRoster(class)">{{class.class_name}}</a>
</li>
</ul>
</div>
<div class="span2">
<ul class="nav nav-pills nav-stacked">
<li ng-repeat="student in students | orderBy:orderProp">
<a ng-click="enterPassword(student)">{{student.student_name}}</a>
</li>
</ul>
</div>
</div>
控制器
function ClassListCtrl($scope, $http) {
$scope.loadedList=[];
$scope.students=[];
$scope.activeClass='';
$scope.orderProp = 'alphabetical';
$http.get('data/class.json').success(function(data) {
$scope.classes = data;
});
$scope.loadRoster=function(classlist){
$scope.selectedClass=classlist;
$scope.activeClass='active';
if($scope.loadedList[classlist.class_id]== undefined){
$http.get('data/class_'+classlist.class_id+'.json').success(function(data){
$scope.loadedList[classlist.class_id]=data;
$scope.students=data;
});
}
$scope.students=$scope.loadedList[classlist.class_id];
}
$scope.studentClick=function(student){
}
}
好的,这可以很好地提取数据。我可以点击一个班级,它会加载该班级的学生。为了减少 AJAX 调用,我存储了那些被单击的类,如果再次单击该类,它将从内存中获取它而不是进行调用。这很好,因为班级名单大部分是静态的。
我试图让它加载一个默认的类名册(按字母顺序排列的第一个)并将该列表项标记为活动的。
其次,当他们单击一个列表项时,我想将该列表项更改为活动状态,并将其他项的类更改为空。我也不知道该怎么做。就目前而言,现在没有一个是活跃的,但是当我点击一个时,所有的都变得活跃。