이번에는 AngularJS를 사용하여 렌더링을 모니터링하는 방법과 AngularJS를 사용하여 렌더링을 모니터링할 때 주의 사항에 대해 설명하겠습니다. 다음은 실제 사례입니다.
사실 Angular
의 ng-repeat
를 통해 구성됩니다. html
의 코드는 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
对象后,使用document.getElementById
获取到新增的<li>
对象,然后为其添加一个class="active"
,结果发现获取到的DOM
对象为null
,经过搜索发现原因是:往lists
数组push
对象后,数组发生改变,所有的<li>
都会重新渲染,在push
完成之后马上去找新增的DOM
对象,DOM
还没渲染好,因此是获取不到的。解法是:使用AngularJS
的指令去监听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); } } } });입니다. picture 아래의 새 목록
버튼
을 클릭하면 새 list
개체를 lists
배열에 push
할 수 있습니다. 자동으로 렌더링되며 그에 따라 <li>
가 다음과 같이 추가됩니다.
MyList1
은 항상 active
상태(class="active" code>) , 내 요구 사항은 list
를 추가한 후 새 list
를 active
로 설정하는 것입니다. 다음 스타일:
에 해당하는 함수, 새 list
개체를 lists
배열에 push
한 후 document 를 사용하세요. getElementById
는 새로 추가된 <li>
객체를 얻은 다음 여기에 class="active"
를 추가하고 얻은 를 발견했습니다. DOM
개체가 null
입니다. 검색 후 그 이유는 다음과 같습니다. 개체를 lists
배열에 push
한 후 배열이 변경되고 모든 <li>
가 모두 다시 렌더링됩니다. push
가 완료된 후 새로 추가된 DOM
개체를 즉시 찾으세요. DOM
은 여전히 잘 렌더링되지 않아 얻을 수 없습니다. 해결 방법은 AngularJS
의 지침을 사용하여 ng-repeat
렌더링이 완료되었는지 모니터링하고, 렌더링이 완료된 후 새로 추가된 <li>를 가져오는 것입니다. ; code> 개체, 이 인터넷에는 관련 내용이 많이 있으며 코드는 다음과 같습니다. rrreee<p> 이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 주목하세요. PHP 중국어 웹사이트의 다른 관련 기사를 확인해보세요! <a href="http://www.php.cn/js-tutorial-403500.html" target="_blank" style="max-width:90%"></a>추천 자료: <br></p>🎜마우스가 텍스트 위로 지나갈 때 플로팅 레이어 효과 팝업을 만드는 JS🎜🎜🎜🎜🎜Angular 구성 요소와 상호 작용하는 방법🎜🎜🎜
위 내용은 AngularJS를 사용하여 렌더링을 듣는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!