AngularJS 표현식: 배열, 객체, $eval, 문자열
⚡ 스마트 요약
AngularJS 표현식은 이중 중괄호 안에 넣어 데이터를 템플릿에 직접 바인딩하는 코드 조각입니다. 숫자, 문자열, 객체 및 배열을 평가할 수 있으며, 컨트롤러 내부에서 `$eval` 함수를 사용하면 동일한 평가를 수행할 수 있습니다.

AngularJS 표현식이란 무엇인가요?
표현식은 이중 중괄호 안에 쓰인 변수입니다. {{ }}이 함수들은 AngularJS에서 매우 흔하게 사용되며, 이 시리즈의 앞부분 튜토리얼에서도 자주 등장합니다.
⚠️ 지원 관련 공지: AngularJS가 도달했습니다 2021년 12월 31일부로 생산 종료 더 이상 패치나 보안 수정이 제공되지 않습니다. 아래 구문은 기존 AngularJS 1.x 애플리케이션을 유지 관리하는 데에는 여전히 유효하지만, 새로운 프로젝트에서는 최신 버전을 사용해야 합니다. 모난여기서 보간 중괄호는 여전히 존재하지만 ng-init $eval 하지 마라.
AngularJS 표현식을 예제를 통해 설명하세요.
AngularJS 표현식은 다음과 같이 이중 중괄호 안에 작성됩니다. {{expression}}.
구문 : 표현의 간단한 예는 다음과 같습니다. {{5 + 6}}.
AngularJS 표현식은 ng-bind 디렉티브와 동일한 방식으로 데이터를 HTML에 바인딩하며, AngularJS는 표현식이 배치된 위치에 정확하게 데이터를 표시합니다.
이 예시에서는 간단한 숫자 덧셈을 수식으로 나타내는 방법을 보여줍니다.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app=""> Addition : {{6+9}} </div> </body> </html>
Code 설명 :
- ng-app 지시문이 비어 있다는 것은 어떤 모듈도 컨트롤러를 제공하지 않는다는 의미입니다. ��ħ또는 이 페이지에 대한 서비스.
- 간단한 표현식으로 두 숫자를 더할 수 있습니다.
출력:
9와 6을 더하면 결과인 15가 표시됩니다.
AngularJS와 Numbers
표현식은 숫자와 함께 작동합니다. 이 예제는 두 숫자 변수를 곱합니다. margin profit그리고 제품을 표시합니다.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="margin=2;profit=200"> Total profit margin {{margin*profit}} </div> </body> </html>
Code 설명 :
- `ng-init` 지시문은 뷰 자체에서 변수와 그 값을 정의하는데, 이는 마치 일반 코드의 지역 변수와 유사합니다. 프로그래밍 언어. 이리
marginprofit선언되고 할당됩니다. - 그런 다음 해당 표현식은 두 로컬 변수를 곱합니다.
출력:
2와 200을 곱하면 결과인 400이 표시됩니다.
AngularJS 문자열
표현식은 문자열에서도 작동합니다. 이 예제는 다음을 정의합니다. firstName lastName 그리고 둘 다 표시합니다.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="firstName='Guru';lastName='99'"> First Name : {{firstName}}<br> Last Name : {{lastName}} </div> </body> </html>
Code 설명 :
- ng-init 지시문은 정의합니다.
firstName값과 함께 "Guru"및lastName값 "99"를 가지고 있습니다. - 표현식
{{firstName}}{{lastName}}해당 변수들을 읽어서 뷰에 표시합니다.
출력:
두 값 모두 화면에 나타납니다.
AngularJS 객체
표현은 다음과 같이 작동합니다. JavaScript 객체는 이름-값 쌍으로 구성됩니다. 의 구문은 다음과 같습니다. Java스크립트 객체는 다음과 같습니다.
var car = {type: "Ford", model: "Explorer", color: "White"};
이 예시는 다음을 정의합니다. person 두 개의 키-값 쌍을 담고 있는 객체 firstName lastName.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="person={firstName:'Guru',lastName:'99'}"> First Name : {{person.firstName}}<br> Last Name : {{person.lastName}} </div> </body> </html>
Code 설명 :
- ng-init 지시문은 객체를 정의합니다.
person키-값 쌍을 사용하여firstName로 설정 "Guru"및lastName"99"로 설정됩니다. - 표현식
{{person.firstName}}{{person.lastName}}해당 멤버들을 읽으세요. 이 멤버들은 객체에 속하기 때문에 값을 얻으려면 점 표기법이 필요합니다.
출력:
가치 firstName lastName 화면에 나타납니다.
AngularJS 배열
표현식은 배열과 함께 작동합니다. 이 예제는 학생의 세 과목 성적을 저장하는 배열을 정의하고 각 값을 표시합니다.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="marks=[1,15,19]"> Student Marks<br> Subject1 : {{marks[0]}}<br> Subject2 : {{marks[1]}}<br> Subject3 : {{marks[2]}} </div> </body> </html>
Code 설명 :
- ng-init 지시문은 배열을 정의합니다.
marks세 가지 값 1, 15, 19를 사용합니다. - 형태의 표현
marks[index]각 요소를 읽으세요.
출력:
배열에 정의된 마크가 표시됩니다.
AngularJS 표현식 기능 및 제한 사항
기능
- AngularJS 표현식은 다음과 같습니다. Java스크립트 표현식은 많은 부분에서 동일한 기능과 유연성을 공유합니다.
- 어디에 Java스크립트가 정의되지 않은 속성에 대해 ReferenceError 또는 TypeError를 발생시키지만, AngularJS 평가는 관대하여 undefined 또는 null을 반환합니다.
- 필터는 데이터가 표시되기 전에 형식을 지정하기 위해 표현식 내부에 적용할 수 있습니다.
- 삼항 연산자가 지원됩니다.
{{ isReady ? 'Yes' : 'No' }}유효합니다.
제한 사항
- AngularJS 표현식 내에서는 반복문과 예외 처리를 사용할 수 없습니다. 조건 논리는 삼항 연산자로 제한됩니다.
if재무제표는 제공되지 않습니다. - 함수는 표현식 내에서 선언할 수 없으며, ng-init 지시문 내에서도 마찬가지입니다.
- 정규 표현식은 표현식 내부에 생성할 수 없습니다. 정규 표현식은 문자열을 일치시키는 데 사용되는 기호와 문자의 조합입니다. 예를 들어,
.*\.txt$그리고 그러한 문자 그대로의 표현은 허용되지 않습니다. - 쉼표 연산자(
,)와void운영자는 허용되지 않습니다.
ng-bind와 표현식 중괄호: 어떤 것을 사용해야 할까요?
Double `#` 태그와 `ng-bind` 디렉티브는 동일한 렌더링 결과를 생성하므로 둘 중 하나를 선택하는 것이 임의적인 것처럼 보일 수 있습니다. 하지만 그렇지 않습니다. 두 방식은 AngularJS 로딩이 완료되기 직전의 순간에 다르게 동작하며, 그 차이는 페이지를 사용하는 사용자에게 분명히 드러납니다.
| 아래 | {{ expression }} | ng-바인드 |
|---|---|---|
| 쓰여진 | 요소 내용 | 요소 속성 |
| AngularJS가 로드되기 전 | 교정기가 화면에 잠깐 나타납니다. | 아무것도 표시되지 않습니다 |
| 가독성 | 높을수록 값이 일렬로 정렬됩니다. | 낮은 값 — 속성에 값이 숨겨져 있습니다. |
| 요소당 여러 값 | 가능 | 아니요, 바인딩은 하나만 가능합니다. |
| 일회성 바인딩 | 예 {{::value}} |
예 ng-bind="::value" |
중괄호가 잠시 나타나는 현상을 보간되지 않은 콘텐츠의 일시적인 노출이라고 하는데, 이는 브라우저가 AngularJS 컴파일 전에 마크업을 렌더링하기 때문에 발생합니다. 스크롤 없이 보이는 영역에 콘텐츠를 표시하려면 `ng-bind`를 사용하거나 `ng-cloak` 디렉티브를 추가하세요. 중괄호는 특히 하나의 요소 안에 여러 값이 포함될 때와 같이 다른 모든 영역에서 여전히 더 명확하고 읽기 쉬운 선택입니다.
표현식과 $eval의 차이점
The $eval 이 함수는 컨트롤러 내부의 표현식을 평가합니다. 표현식은 뷰에서 평가되는 반면, $eval 컨트롤러 코드에서 평가됩니다.
이 예에서는 다음을 사용합니다. $eval 두 숫자를 더하고 그 결과를 스코프 객체에 저장하여 뷰에서 표시할 수 있도록 합니다.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <div ng-app="sampleApp" ng-controller="AngularController"> <h1>Guru99 Global Event</h1> {{value}} </div> <script> var sampleApp = angular.module('sampleApp', []); sampleApp.controller('AngularController', function($scope) { $scope.a = 1; $scope.b = 1; $scope.value = $scope.$eval('a+b'); }); </script> </body> </html>
Code 설명 :
- 두 개의 범위 변수,
ab각각은 1의 값을 갖습니다. $scope.$eval두 수의 합을 평가하고 그 결과를 스코프 변수에 할당합니다.value.- 그러면 화면에 표시됩니다.
value.
출력:
출력 결과는 내부에서 평가된 표현식을 보여줍니다. 제어 장치두 스코프 변수의 합이 뷰로 전송되어 표시됩니다.












