2017-09-17 6 views
2

AngularJS html tamplates에서 직접 ES6 화살표 함수를 사용할 수 있습니까?AngularJS HTML 템플릿에서 ES6 화살표 함수 사용

<div ng-if="results.filter(e => e.ext == 'xml').length > 0">Text</div> 

'결과'는 'ext'속성을 가진 개체 목록입니다. 지금까지 내가 lodash를 사용했습니다 그것은 완벽하게 작동합니다 :

그 또는 몇 가지 힌트 또는 어쩌면 더 나은 아이디어를 가진 사람의 경험을 가지고 ...

<div ng-if="_.filter(results, { ext : 'xml' }).length > 0">Text</div> 

을하지만, 가능하면 ES6로 변경됩니다?

+2

여러분은 할 수 있습니다. 'ng-if' 지시어에있는 모든 j 표현식을 각도로 평가하지만 그렇게해서는 안됩니다. ES6을 지원하지 않는 여러 버전의 브라우저가 있기 때문입니다. – alexmac

+1

@alexmac 이것은 AngularJS이며 AngularJS의 표현식에는 제한이 있습니다. [AngularJS 개발자 안내서 - AngularJS Expressions vs. JavaScript Expressions] (https://docs.angularjs.org/guide/expression#angularjs-expressions-vs-javascript-expressions)를 참조하십시오. – georgeawg

답변

1

AngularJS Expression이며 기능 선언은 허용되지 않습니다. 워드 프로세서

:

  • 기능 없음 선언 : 표현이 다음과 같은 차이점이 자바 스크립트의 표현처럼

    AngularJS와 표현 AngularJS와 자바 스크립트 표현식

    대 당신은 선언 할 수 없습니다 ng-init 지시문 내에서도 AngularJS 표현식으로 작동합니다. 좀 더 복잡한 자바 스크립트 코드를 실행하려면

, 당신은 컨트롤러 방법하고보기에서 메소드를 호출 할 필요가 있습니다. AngularJS 표현식을 eval()과 같이 사용하려면 $eval() method을 사용하십시오.

+0

AngularJS 표현식에서 eval()을 호출 할 때 명확하게하기 위해 표현식 내에서 eval()을 호출하여 그 자체가 유효한 표현식을 평가할 수 있습니다. 예 : ng-if에서 $ eval (expr)을 호출 할 수 있지만 expr은 컨트롤러에 정의 된 유효한 Angular 표현식 일 수 있습니다. '3 * 10 | 통화' –

0

없음

— AngularJS Developer Guide - Expressions

, georgeawg가 말했다, 당신은 (에 'NG-경우'내부 예컨대) 전혀 표현의 내부 기능을 선언 할 수 없습니다. 이것은 부분적으로 Angular가 비즈니스 로직을 컨트롤러에 배치하여 문제를 정확하게 분리하도록 권장하기위한 것입니다.

각도 표현식은 범위의 개체 또는 값 속성, 기본 서식, 정렬 및 필터링에 액세스하는 것과 같은 기본적인 것들로 제한됩니다. 모든 비즈니스 로직 정의가 컨트롤러에 속합니다.