显示数据库中的数据?

问题描述:

我从数据库的两个表中检索数据。显示数据库中的数据?

这里怎么在客户端查找检索到的数据:

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' }, 
    ]; 

我要显示这样说:

enter image description here

我的问题是什么在具有AngularJS显示数据的优雅方式外键协会?

+0

'idForgien'字段指向一个课程ID? – Nhor

+1

这可能是最好的制作和返回一个更好的视图模型,以避免像这样的情况 – scniro

+0

你可能想编写一个过滤器,按课程分组你的学生 – Nhor

老答案

实现这一目标最简单的方法,是刚筑巢ng-repeatng-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; 
    } 

}]);