显示数据库中的数据?
问题描述:
我从数据库的两个表中检索数据。显示数据库中的数据?
这里怎么在客户端查找检索到的数据:
this.courses = [
{ id: 1, text: 'Math' },
{ id: 2, text: 'Physics' },
];
this.students = [
{ id: 1, courseId: 2, text: 'John' },
{ id: 2, courseId: 2, text: 'Willi' },
{ id: 3, courseId: 2, text: 'Inga' },
{ id: 4, courseId: 1, text: 'Jerry' },
{ id: 5, courseId: 1, text: 'Michael' },
];
我要显示这样说:
我的问题是什么在具有AngularJS显示数据的优雅方式外键协会?
答
老答案
实现这一目标最简单的方法,是刚筑巢ng-repeat
与ng-if
。
<div ng-repeat="course in controller.courses">
<span ng-bind="::course.text" />
<div ng-repeat="student in controller.students" ng-if="student.courseId == course.id">
<span ng-bind="::student.text" />
</div>
</div>
另一个解决方案是实现一个过滤器。
ps:通常,在角度上,视图强烈依赖于后端返回的视图模型。其原因是需要将所有业务逻辑位于应用程序的一层中。 但是,如果您的后端只是一种网络服务,并且客户端中包含所有逻辑,那没有任何问题。这只是更难调试,黑客也可以阅读你的业务逻辑。
更新答案
你问的最优雅的方式来实现的角度应用程序中的映射。我认为处理服务中的数据将是最好的选择。
angular.module('myApp').service("SomeServiceName", ['$q', '$http', function($q, $http){
var service = {
getStudentsInCourses: getStudentsInCourses
};
return service;
function getStudentsInCourses(){
var deferred = $q.defer();
var promises = [];
promises.push($http.get('myUrlToMyCourses'));
promises.push($http.get('myUrlToMyStudents'));
$q.all(promises).then(function(results){
var courses = results[0];
var students = results[1];
for (var i = 0; i <= courses.length; ++i){
courses[i].students = [];
for(var j = 0; j...){
// Push your students in your courses ;-)
}
}
deferred.resolve(courses);
}, function(error){
//Handle error
});
return deferred.promise;
}
}]);
'idForgien'字段指向一个课程ID? – Nhor
这可能是最好的制作和返回一个更好的视图模型,以避免像这样的情况 – scniro
你可能想编写一个过滤器,按课程分组你的学生 – Nhor