【发布时间】:2018-05-10 12:58:20
【问题描述】:
我必须下拉列表并希望根据第一个列表中的选定值填充第二个列表。我在填充第一个列表时遇到了问题。我使用课程服务的 getCurrentSessionCourses() 方法从服务器获取数据并从该数据中填充第一个列表。第一个列表填充在 for 循环中。如果 for 循环在服务器响应之前执行,则 i 具有未定义的值。 有时数据在 for 循环执行之前出现,有时数据在 for 循环执行之后出现。下面是我的 AddStudentController.js 和相关的 HTML
(function(){
var myApp = angular.module("myApp");
var AddStudentController = function ($scope,StudentService,CourseService) {
var onCourses = function (data) {
var result = [];
for (var i = 0; i < $scope.Courses.length; i++) {
for (var j = 0; j < data.length; j++) {
if (data[j].IdCourse === $scope.Courses[i].idCourse) {
if (result.indexOf(data[j]) === -1) {
result.push(data[j]);
}
}
}
}
$scope.courses = result;
$scope.selectedCourse = result[0];
var IdCourse = $scope.selectedCourse.IdCourse;
var IdSessionCourse = null;
for (var i = 0; i < $scope.Courses.length; i++) {
if ($scope.Courses[i].idCourse === IdCourse) {
IdSessionCourse = $scope.Courses[i].idSessionCourse;
}
};
CourseService.getCourseClasses(IdSessionCourse).then(function (classes) {
$scope.classes = classes;
$scope.selectedClass = classes[0];
});
CourseService.getCurrentSessionCourses().then(function (courses) { $scope.Courses = courses });
CourseService.courses().then(onCourses);
};
myApp.controller("AddStudentController", AddStudentController)
}());
////Below is CourseService.js
(function () {
var CourseService = function ($http) {
var urlBase = 'api/CoursesAPI';
var getCurrentSessionCourses = function () {
return $http.get("api/CoursesAPI/GetCurrentSessionCourses")
.then(function (response) {
return response.data;
});
return {
getCurrentSessionCourses: getCurrentSessionCourses,
};
};
var module = angular.module("myApp");
module.factory("CourseService", CourseService);
}());
<div class="col-lg-5">
<div class="form-group">
<label>Select Course</label>
<select ng-model="selectedCourse" ng-change="change()" class="formcontrol"
ng-options="course.IdCourse as course.Name for course in courses">
</select>
</div>
</div>
<div class="col-lg-5">
<div class="form-group">
<label>Select Class</label>
<select ng-model="selectedClass" class="form-control" ng-options="class.idClass as class.className +' : '+class.campusName for class in classes"></select>
</div>
</div>
【问题讨论】:
-
发布您的服务
标签: javascript angularjs angularjs-directive angularjs-scope