각진 경우 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 콜에러), 값은 계속 설정됩니다(짝수).null
javascript의 값이기도 합니다).워치는 각각의 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
'IT' 카테고리의 다른 글
Spring Boot 서비스 (0) | 2023.02.22 |
---|---|
tsconfig의 "target" 및 "module"에 대해 (0) | 2023.02.22 |
TS2322를 수정하는 방법: "다른 유형의 구속조건 'object'로 인스턴스화할 수 있습니다." (0) | 2023.02.22 |
워드프레스를 사용해서 입력을 삭제하는 가장 좋은 방법을 알려주시겠어요? (0) | 2023.02.22 |
jQuery 없이 $http로 urlencoded 폼 데이터를 POST하려면 어떻게 해야 합니까? (0) | 2023.02.22 |