식에 대한 Angular lazy 일회성 바인딩


93

AngularJS는 버전 1.3.0-beta.10 이후 새로운 기능인 "lazy one-time binding"을 가지고 있습니다.

간단한 표현식에 접두사를 붙일 수 있으며 ::, 표현식이 처음 평가 된 후 angular가 감시를 중지하도록 지시 할 수 있습니다 . 주어진 일반적인 예는 다음과 같습니다.

<div>{{::user.name}}</div>

다음과 같은 표현식에 유사한 구문이 있습니까?

<div ng-if="user.isSomething && user.isSomethingElse"></div>
<div ng-class="{classNameFoo: user.isSomething}"></div>

자세한 설명은 각 문서를 참조하십시오 docs.angularjs.org/guide/expression#one-time-binding
하기 Akshay Gundewar

답변:


160

예. 당신이 가진 모든 표현 앞에 있습니다 ::, 심지어 사람 ngIf또는 ngClass:

<div ng-if="::(user.isSomething && user.isSomethingElse)"></div>
<div ng-class="::{classNameFoo: user.isSomething}"></div>

실제로 코드:일회성 바인딩을 활성화하기 위해 표현식의 첫 번째 문자 두 개가 있는지 확인한 다음 제거하므로 괄호가 필요하지 않습니다. 다른 모든 것은 동일하게 유지됩니다.


3
: 몇 가지 새로운 기능이 잘 작동하지 않지만 그것은, 내 질문에 대답 <div ng-if="::user.isSomething"></div>하고 <div ng-if="::(!user.isSomething)"></div>모두 렌더링합니다. "::"없이 작동합니다.
seldary

@seldary 문제를 재현 할 수 없습니다. ::내 편집에서 설명한 것처럼 접두사가 붙은 모든 표현이 잘 작동합니다. 의심스러운 경우 바이올린을 만들 수 있습니까?
Blackhole

7
처음에는 여러 클래스가 정의 된 ngClass와 함께 저에게도 작동하지 않는 것처럼 보였습니다. ngClass에서 사용되는 감시 변수 중 일부가 아직 정의되지 않았기 때문에 바인딩이 여전히 바인딩되어 있음을 빨리 알았습니다 (그리고 angular는 감시자를 해제하기 전에 값이 먼저 정의되기를 기다릴 것임을 알고 있습니다). 이 동작을 보여주는 작은 바이올린이 있습니다 . jsfiddle.net/2LkyLoop .
Denis Pshenov

1
@MaxRocket bindonce 구문은 각도 1.3에서 추가되었습니다. 따라서 1.2 이하에서는 작동하지 않습니다
Berty 2015 년

2
ng-if의 일회성 바인딩이 작동하지 않는 것 같습니다. 감시자 수는 ::. ng-class에서는 잘 작동하지만 ng-if는 나에게 일회성 바인딩을 따르지 않는 것 같습니다 (1.5.6). ng-repeat에서 가져온 개체 속성을 단방향 바인딩하려고합니다. 그것이 차이를 만드는지 확실하지 않습니다.
AgmLauncher
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.