IT

각진 경우 ng-if angular로 일회성 바인딩?

itgroup 2023. 2. 22. 21:43
반응형

각진 경우 ng-if angular로 일회성 바인딩?

다음과 같은 뷰가 있는 경우:

<div ng-repeat="foo in foos">
  <p ng-if="bar">omg lol</p>
  <p ng-if="!bar">lol omg</p>
</div>

실제로 (2 * foos.length) + $$watchers 1개를 만들고 있는데, 이는 매우 좋지 않습니다.ng-if="::bar"를 할 수 있다고 하는 소스를 온라인에서 몇 개 찾았습니다만, 그래도 시청자 수는 변하지 않습니다.ng-if를 강제로 한 번만 묶을 수 있는 방법이 있나요?

이렇게 해야 하는 것은 정말 바보 같은 짓이다.

<div ng-repeat="foo in foos" ng-if="bar">
  <p>omg lol</p>
</div>
<div ng-repeat="foo in foos" ng-if="!bar">
  <p>lol omg</p>
</div>

그 대신 4달러 정도의 경비원이 있을 것 같은데...그래서 나는 그런 바보 같은 짓을 하지 않기 위해 대안을 찾고 있다.

대답하기 위해 제 코멘트를 연장하는 것뿐입니다.

각도 1.3 원타임바인딩 구문(::불필요한 시계는 뺄 수 있습니다.단지 관련 데이터를 설정한 후 잠시 동안 시계를 측정하면 됩니다.이유는 이렇다.뷰에 일회성 바인딩 속성을 설정할 때 angular는 정의된 값을 얻을 때까지 임시 워치를 설정합니다. 즉,undefined이 접근방식은 ajax 콜, 타임아웃, 약속 체인 해결 등의 지연된 연산을 통해 입력되는 바운드 값을 지원하기 위한 것입니다.이것 없이::미리 채워진 바운드 값 이외에는 정상적으로 동작하지 않습니다.

따라서 특정 시점에서 일회성 바인딩 값으로 일부 값을 설정해야 합니다.정의되지 않은 상태로 두지 마세요.

컨디션이 좋을 때 말하세요.<div ng-if="::lol"></div>100번 반복됩니다.리피터 또는 상태를 결정하는 조작에 값을 바인드할 때 확인하세요.lol그 조작이 실패해도(예를 들어 ajax 콜에러), 값은 계속 설정됩니다(짝수).nulljavascript의 값이기도 합니다).워치는 각각의 DOM 바인딩을 렌더링하는 다음 다이제스트 사이클 후에 삭제됩니다.

특정 플런커에서는 다음 작업을 수행할 수 있습니다.

<ul ng-repeat="item in items"  ng-if="::lol">
  <li>{{ ::item }}</li>
</ul>

대신

<ul ng-repeat="item in items">
  <li ng-if="::lol">{{ ::item }}</li>
</ul>

이를 위해서는 Bindeonce를 사용해야 합니다.https://github.com/Pasvaz/bindonce

언급URL : https://stackoverflow.com/questions/30904190/one-time-binding-with-ng-if-in-angular

반응형