■ Front-End ■/AngularJs

[AngularJS] $http 서비스로 받아온 데이터에 필터를 적용해보자.

한길(One Way) 2023. 2. 22.

SPA 작성을 쉽게 하는 자바스크립트 웹 프레임워크이다.

 

 

AngularJS에서 $http 서비스를 이용하여 json 데이터를 컨트롤러에 갖고 와 필터를 적용해서 화면에 표시해 본다. AngularJS를 사용하기 위해서 아래와 같이 angularJS CDN을 script 태그에 추가한다.

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>

 

 

div 태그에 ng-app 속성을 만들고 "myApp"으로 정의하고 ng-controller 속성을 만들고 "myCtrl"이라고 정의한다.

<div ng-app="myApp" ng-controller="myCtrl">

 

 

컨트롤러 코드를 살펴보면 $http.get()으로 파일경로를 입력하면 파일 내용을 response에 담아 온다.JSON 파일경로나 JSON 데이터를 넘겨주는 URL을 기재하면 된다. json 데이터를 보면 date 이름으로 배열형태로 담겨져 있어서 response.data로 하였다.

 

$http.get("./data.json").then(

    function(response) {

        $scope.data = response.data;

    }); 

});

             

 

아래는 ng-repeat 속성으로 데이터를 반복해서 표시하게 된다.

<td>List
    <table>
       <tr ng-repeat="x in data">
          <td>{{ x.id }}</td>
          <td>{{ x.name}}</td>
       </tr>
    </table> 
</td>

  

데이터를 표시할 때 $index을 정의하면 데이터의 인텍스를 표시한다.

인덱스는 0부터 시작하기 때문에 1을 더하여서 표시하였다.

<td>Number
    <table>
       <tr ng-repeat="x in data">
          <td>{{ $index + 1 }}</td>
          <td>{{ x.id }}</td>
          <td>{{ x.name }}</td>
       </tr>
    </table> 
</td>

 

데이터를 표시할 때 "name" 필드를 기준으로 정렬한다.

<td>Sorting
       <table>
              <tr ng-repeat="x in data | orderBy : 'name'">
                    <td>{{ x.id}}</td>
                    <td>{{ x.name}}</td>
              </tr>
       </table> 
</td>

 

데이터를 표시할 때 "name" 필드의 값을 모두 대문자로 변환한다. 

<td>Uppercase
    <table>
       <tr ng-repeat="x in data">
          <td>{{ x.id }}</td>
          <td>{{ x.name | uppercase }}</td>
       </tr>
    </table> 
</td>

 

예제의 전체코드이다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>AngularJS</title>
<style>
table, th, td {
    border: 1px solid grey;
    border-collapse: collapse;
    padding: 3px;
}
 
table tr:nth-child(odd) {
    background-color: #f1f1f1;
}
 
table tr:nth-child(even) {
    background-color: #ffffff;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script>
 var app = angular.module('myApp', []);
 app.controller('myCtrl', function($scope, $http) {
  $http.get("./data.json").then(
   function(response) {
    $scope.data = response.data;
   }
  );
 });
</script>
</head>
 
<body>
    <div ng-app="myApp" ng-controller="myCtrl">
       <table>
          <tr>
              <td>List
                 <table>
                    <tr ng-repeat="x in data">
                        <td>{{ x.id }}</td>
                        <td>{{ x.name}}</td>
                    </tr>
                 </table>
              </td>
              <td>Number
                 <table>
                    <tr ng-repeat="x in data">
                        <td>{{ $index + 1 }}</td>
                        <td>{{ x.id }}</td>
                        <td>{{ x.name }}</td>
                    </tr>
                 </table>
              </td>
              <td>Sorting
                 <table>
                    <tr ng-repeat="x in data | orderBy : 'name'">
                        <td>{{ x.id}}</td>
                        <td>{{ x.name}}</td>
                    </tr>
                 </table>
              </td>
              <td>Uppercase
                 <table>
                    <tr ng-repeat="x in data">
                        <td>{{ x.id }}</td>
                        <td>{{ x.name | uppercase }}</td>
                    </tr>
                 </table>
              </td>
          </tr>
       </table>
    </div>
    <hr>
</body>
</html>

 

웹서버 환경설정이 잘 안 되는 분은 아래의 코드로 대체해서 구동하면 된다.

<script>
      var app = angular.module('myApp', []);
      app.controller('myCtrl', function($scope) {
           var data = [ {
                 "id" : "id1",
                 "name" : "MongoDB"
           }, {
                 "id" : "id2",
                 "name" : "Express"
           }, {
                 "id" : "id3",
                 "name" : "AngularJS"
           }, {
                 "id" : "id4",
                 "name" : "Node.js"
           }, {
                 "id" : "id5",
                 "name" : "jQuery Mobile"
           } ];
 
           $scope.data = data;
      });
</script>

 

 

위의 코드에서 사용한 data.json 파일이다. 

실제 프로젝트에서는 코드로 데이터를 로딩하겠지만 여기서는 예제를 위해 파일로 생성해 두었다.

{
 "data" : [ {
  "id" : "id1",
  "name" : "MongoDB"
 }, {
  "id" : "id2",
  "name" : "Express"
 }, {
  "id" : "id3",
  "name" : "AngularJS"
 }, {
  "id" : "id4",
  "name" : "Node.js"
 }, {
  "id" : "id5",
  "name" : "jQuery Mobile"
 } ]
}

 

아래와 같이 화면에 표시된다.

 

728x90

댓글