ng-repeat 렌더링이 완료되었는지 확인하는 방법
이번에는 ng-repeat 렌더링이 완료되었는지 확인하는 방법과 ng-repeat 렌더링이 완료되었는지 확인 시 주의사항은 무엇인지 알려드리겠습니다.
특정 프로젝트에서 내 웹페이지에 다음 스타일의 목록 <ul>
요소가 있습니다: <ul>
元素,样式如下:
实际上它是通过Angular
的ng-repeat
形成的,html
中的代码是:
<li ng-repeat="for list in lists()" id="{{ list.id }}">{{ list.name }}</li>
图中下方的新建清单button
,点击之后就往lists
数组中push
了一个新的list
对象,此时页面会自动渲染,也对应增加一个<li>
,如下:
注意MyList1
一直是active
状态的(class="active"
),我的需求是新增list
后,把新增的list
设置为active
,即在新增后就变成下面这种样式:
刚开始我尝试在button
对应的函数中,往lists
数组中push
了新的list
对象后,使用<a href="http://www.php.cn/code/658.html" target="_blank">document</a>.getElementById
获取到新增的<li>
对象,然后为其添加一个class="active"
,结果发现获取到的DOM
对象为null
,经过搜索发现原因是:往lists
数组push
对象后,数组发生改变,所有的<li>
都会重新渲染,在push
完成之后马上去找新增的DOM
对象,DOM
还没渲染好,因此是获取不到的。解法是:使用<a href="http://www.php.cn/angularjs/angularjs-examples.html" target="_blank">AngularJS</a>
的指令去监听ng-repeat
是否渲染完成,在渲染完成后,再去取新增的<li>
对象,这个网上有很多相关的内容了,代码如下:
myapp.directive('repeatFinish', function ($timeout) { return { restrict: "C", link: function (scope, element, attr) { if(scope.$last === true){ $timeout(function () { scope.change_list(element[0]); }, 10); } } } });
上述代码建立了一个名为repeatFinish
的指令,restrict: "C"
表示指令放在DOM
的class
中(驼峰形式,即class="repeat-finish"
),scope.$last === true
表示已经渲染到了最后一个对象,此时执行change_list
函数(定义在控制器中,功能是把当前active
的对象取消active
,然后设置传入的DOM
对象为active
),element[0]
可以直接取到当前渲染的DOM
元素。注意我使用了$timeout
,10ms
后执行change_list
,我发现直接使用change_list
还是会找不到DOM

Angular
의 ng-repeat
를 거쳐서 구성되는데, html의 코드는 다음과 같습니다. rrreee
그림 하단에 새 목록버튼
을 만듭니다. 클릭하면 푸시
됩니다. code>lists 배열이 생성됩니다. 이때 페이지가 자동으로 렌더링되고 <li>
가 추가됩니다. 따라서 다음과 같습니다:
MyList1
은 항상 active
상태(class="active"
)이고, 내 요구 사항은
list
를 추가한 후 새 list
를 active
로 설정하세요. , 즉, 추가한 후에는 다음 스타일이 됩니다:
처음에는 해당 함수에서 버튼
을 사용하려고 했는데, 새 목록
개체를 에 <code>push
한 후 목록 배열, <a href="http://www.php.cn/code/658.html" target="_blank">document</a>
<li>
객체에 class="active"
를 추가하면 획득한 DOM
객체는 null, 검색 🎜 후 이유는 다음과 같습니다. push 후
개체를 lists
배열에 추가하면 배열이 변경됩니다. push
가 완료된 후 모든 <li>
가 다시 렌더링됩니다. 완료되면 즉시 새로 추가된 DOM
객체를 찾으세요. DOM
code>는 아직 렌더링되지 않았으므로 얻을 수 없습니다. 해결 방법은 다음과 같습니다. <a href="http://www.php.cn/angularjs/angularjs-examples.html" target="_blank">AngularJS🎜</a>
명령을 사용하여 를 모니터링합니다. ng -repeat
렌더링이 완료되었는지 여부는 렌더링이 완료된 후 새로 추가된 <li>
객체를 가져오는 코드입니다. 🎜rrreee🎜위의 코드는 repeatFinish
라는 명령을 생성합니다. restrict: "C"
는 해당 명령이 클래스
에 배치된다는 의미입니다. DOM
(카멜 표기 형식, 즉 class="repeat-finish"
), scope.$last === true
는 다음을 의미합니다. 마지막 개체가 렌더링되었으며 change_list
함수(controller🎜에 정의됨, 이 기능은 현재 active
개체를 변경하고 active
를 취소한 다음 들어오는 DOM
개체를 active
로 설정하는 것입니다. , element[0]
code>는 현재 렌더링된 DOM
요소를 직접 가져올 수 있습니다. $timeout
을 사용하고 10ms
이후에 change_list
를 실행했는데, DOM
을 직접 사용했는데 이유는 알 수 없습니다. 누군가 답변해 주셨으면 좋겠습니다. 🎜🎜이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요! 🎜🎜추천 자료: 🎜🎜🎜단일 페이지 앱을 구축하기 위한 Vue.js+Flask(코드 포함) 🎜🎜🎜🎜🎜 Vue 코드 사양을 사용하지 않는 탐지 방법 요약🎜🎜🎜위 내용은 ng-repeat 렌더링이 완료되었는지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











1. 먼저 Kujiale에서 렌더링할 디자인 계획을 엽니다. 2. 그런 다음 렌더링 메뉴에서 평면도 렌더링을 엽니다. 3. 그런 다음 평면도 렌더링 인터페이스의 매개변수 설정에서 직교를 클릭합니다. 4. 마지막으로 모델 각도를 조정한 후 Render Now를 클릭하여 직교 평면도를 렌더링합니다.

Vue 페이지 렌더링은 비동기식입니다. Vue는 성능을 향상시킬 수 있는 비동기 렌더링을 사용합니다. 비동기 업데이트가 사용되지 않으면 성능상의 이유로 Vue는 이 데이터 업데이트 후에 뷰를 비동기적으로 업데이트합니다.

Vue 오류: v-html을 올바르게 사용하여 동적 HTML 코드를 렌더링할 수 없습니다. 어떻게 해결하나요? 소개: Vue 개발에서는 서식 있는 텍스트 콘텐츠나 동적으로 생성된 사용자 입력을 표시하기 위해 HTML 코드를 동적으로 렌더링해야 하는 경우가 많습니다. Vue는 이 기능을 구현하기 위해 v-html 지시문을 제공합니다. 그러나 때로는 v-html을 사용하여 동적 HTML 코드를 올바르게 렌더링할 수 없는 문제가 발생할 수 있습니다. 이 기사에서는 이 문제의 원인을 살펴보고 해결 방법을 제공합니다. 문제 설명: Vue에서 v를 사용할 때

Vue 오류: v-html을 올바르게 사용하여 HTML 코드를 렌더링할 수 없습니다. 어떻게 해결합니까? Vue는 대화형 사용자 인터페이스를 구축하는 데 도움이 되는 인기 있는 JavaScript 프레임워크입니다. Vue에서는 v-html 지시문을 사용하여 HTML 코드를 템플릿으로 렌더링할 수 있습니다. 그러나 때때로 문제가 발생할 수 있습니다. v-html을 사용하여 HTML 코드를 올바르게 렌더링할 수 없습니다. 이 문서에서는 이 문제를 해결하는 데 도움이 되는 몇 가지 일반적인 원인과 해결 방법을 설명합니다. 첫 번째 가능한 이유는

Vue3에서는 v-for가 목록 데이터를 렌더링하는 가장 좋은 방법으로 간주됩니다. v-for는 개발자가 배열이나 객체를 반복하고 각 항목에 대한 HTML 코드 조각을 생성할 수 있도록 하는 Vue의 지시문입니다. v-for 지시문은 개발자가 사용할 수 있는 가장 강력한 템플릿 지시문 중 하나입니다. Vue3에서는 v-for 명령이 더욱 최적화되어 사용하기 쉽고 유연해졌습니다. Vue3의 v-for 지시문의 가장 큰 변화는 요소 바인딩입니다. Vue2에서는 v-for 지시문을 사용합니다.

Vue를 사용하여 이미지 그레이딩 및 렌더링 처리를 수행하는 방법은 무엇입니까? 개요 최신 웹 애플리케이션 개발에서 이미지 처리는 매우 일반적인 요구 사항입니다. 널리 사용되는 JavaScript 프레임워크인 Vue.js를 사용하면 이미지 그레이딩 및 렌더링 처리를 구현하는 것이 매우 간단하고 효율적이 됩니다. 이 기사에서는 Vue.js를 통해 이미지 그레이딩 및 렌더링 처리를 구현하는 방법과 코드 예제를 보여줍니다. 1단계: Vue 인스턴스 생성 먼저, 이미지의 데이터와 로직을 관리하기 위해 Vue 인스턴스를 생성해야 합니다. HT에서

렌더링 단계에서 다시 그리기 및 리플로우가 미치는 영향: 누가 더 중요합니까? 웹 페이지가 렌더링되면 브라우저는 페이지 콘텐츠를 표시하기 위해 특정 순서에 따라 일련의 작업을 수행합니다. 그중에서도 다시 그리기와 리플로우는 렌더링 프로세스의 두 가지 중요한 단계입니다. 이 기사에서는 다시 그리기 및 리플로우가 렌더링 단계에 미치는 영향을 살펴보고 그 중요성을 분석합니다. 다시 그리기와 리플로우의 의미와 차이점 다시 그리기와 리플로우가 렌더링에 미치는 영향을 이해하기 전에 먼저 그 의미와 차이점을 이해해 보겠습니다. Repaint는 요소의 스타일이 변경되는 것을 의미하지만 요소에는 영향을 미치지 않습니다.

Canvas 렌더링 모드의 원리와 구현을 이해하려면 구체적인 코드 예제가 필요합니다. 먼저 Canvas가 HTML5에서 제공하는 그리기 API이므로 브라우저에서 JavaScript를 사용하여 그래픽, 애니메이션 및 그림을 그릴 수 있다는 점을 분명히 해야 합니다. 다른 시각 효과. 캔버스는 2D 렌더링 모드와 WebGL 렌더링 모드의 두 가지 렌더링 모드를 사용하여 그릴 수 있습니다. 2D 렌더링 모드는 Canvas의 기본 모드로 HTML5에서 Canvas 요소의 2D 컨텍스트를 사용하여 이미지를 그립니다.
