AngularJS ng- 반복 핸들 빈 목록 케이스
나는 이것이 매우 일반적인 것이라고 생각했지만 AngularJS에서 처리하는 방법을 찾을 수 없었습니다. 이벤트 목록이 있고 AngularJS로 출력하고 싶다고 가정하면 매우 쉽습니다.
<ul>
<li ng-repeat="event in events">{{event.title}}</li>
</ul>
그러나 목록이 비어있는 경우 어떻게 처리합니까? 목록에 "이벤트 없음"또는 이와 유사한 메시지 상자가있는 메시지 상자를 갖고 싶습니다. 가까이 오는 유일한 것은 ng-switch
with입니다 events.length
(배열이 아닌 객체가 비어있을 때 어떻게 확인합니까?), 이것이 내가 가진 유일한 옵션입니까?
ngShow 를 사용할 수 있습니다 .
<li ng-show="!events.length">No events</li>
예를 참조하십시오 .
또는 ngHide 를 사용할 수 있습니다
<li ng-hide="events.length">No events</li>
예를 참조하십시오 .
객체의 경우 Object.keys 를 테스트 할 수 있습니다 .
필터링 된 목록과 함께 이것을 사용하려면 깔끔한 트릭이 있습니다.
<ul>
<li ng-repeat="item in filteredItems = (items | filter:keyword)">
...
</li>
</ul>
<div ng-hide="filteredItems.length">No items found</div>
목록이 비어있을 때 DOM에서을 제거하려면 angular-ui 지시문 을 확인하십시오 .ui-if
ul
<ul ui-if="!!events.length">
<li ng-repeat="event in events">{{event.title}}</li>
</ul>
최신 버전의 angularjs에서는이 질문에 대한 정답은 다음을 사용하는 것입니다 ng-if
.
<ul>
<li ng-if="list.length === 0">( No items in this list yet! )</li>
<li ng-repeat="item in list">{{ item }}</li>
</ul>
메시지를 표시하려면 목록을 정의해야하고 길이가 0이기 때문에 목록을 다운로드하려고 할 때이 솔루션이 깜박 거리지 않습니다.
다음은 사용중인 플런저입니다. http://plnkr.co/edit/in7ha1wTlpuVgamiOblS?p=preview
팁 : 로딩 텍스트 또는 스피너를 표시 할 수도 있습니다.
<li ng-if="!list">( Loading... )</li>
<ul>
<li ng-repeat="item in items | filter:keyword as filteredItems">
...
</li>
<li ng-if="filteredItems.length===0">
No items found
</li>
</ul>
이것은 @Konrad 'ktoso'Malawski와 비슷하지만 약간 기억하기 쉽습니다.
Angular 1.4로 테스트
JavaScript / AngularJS 대신 CSS를 사용하는 다른 방법이 있습니다.
CSS :
.emptymsg {
display: list-item;
}
li + .emptymsg {
display: none;
}
마크 업 :
<ul>
<li ng-repeat="item in filteredItems"> ... </li>
<li class="emptymsg">No items found</li>
</ul>
목록이 비어 있으면 <li ng-repeat = "item in filtersItems"> 등이 주석 처리되고 li 요소 대신 주석이됩니다.
이 ng-switch를 사용할 수 있습니다 :
<div ng-app ng-controller="friendsCtrl">
<label>Search: </label><input ng-model="searchText" type="text">
<div ng-init="filtered = (friends | filter:searchText)">
<h3>'Found '{{(friends | filter:searchText).length}} friends</h3>
<div ng-switch="(friends | filter:searchText).length">
<span class="ng-empty" ng-switch-when="0">No friends</span>
<table ng-switch-default>
<thead>
<tr>
<th>Name</th>
<th>Phone</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="friend in friends | filter:searchText">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
</tr>
</tbody>
</table>
</div>
as
키워드를 사용 하여 ng-repeat
요소 아래에서 컬렉션을 참조 할 수 있습니다 .
<table>
<tr ng-repeat="task in tasks | filter:category | filter:query as res">
<td>{{task.id}}</td>
<td>{{task.description}}</td>
</tr>
<tr ng-if="res.length === 0">
<td colspan="2">no results</td>
</tr>
</table>
나는 보통 ng-show를 사용한다
<li ng-show="variable.length"></li>
예를 들어 변수를 정의하는 곳
<div class="list-group-item" ng-repeat="product in store.products">
<li ng-show="product.length">show something</li>
</div>
HTML 페이지에서 렌더링되지 않고 html 태그를 검사에서 볼 수 없기 때문에 ng-if를 사용할 수 있습니다 ...
<ul ng-repeat="item in items" ng-if="items.length > 0">
<li>{{item}}<li>
</ul>
<div class="alert alert-info">there is no items!</div>
참고 URL : https://stackoverflow.com/questions/12340095/angularjs-ng-repeat-handle-empty-list-case
'Programing' 카테고리의 다른 글
두 개의 스택을 사용하여 큐를 구현하는 방법은 무엇입니까? (0) | 2020.02.26 |
---|---|
치명적인 오류 : 최대 실행 시간이 30 초를 초과했습니다 (0) | 2020.02.26 |
현재 사용자의 임시 폴더를 얻는 방법 (0) | 2020.02.26 |
파이썬에서 exit ()와 sys.exit ()의 차이점 (0) | 2020.02.26 |
REST API 모범 사례 : 매개 변수 값 목록을 입력으로 승인하는 방법 (0) | 2020.02.26 |