KnockoutJS 컨테이너없는 바인딩 구문
잠시만 기다려주십시오. KnockoutJS는 바인딩 문서 foreach
의 Note 4에 설명 된 바인딩에 컨테이너없는 바인딩 구문을 사용하는 매우 편리한 옵션을 제공합니다 foreach
.
http://knockoutjs.com/documentation/foreach-binding.html
Knockout 문서 예제에서 알 수 있듯이 다음과 같이 KnockoutJS에서 바인딩을 작성할 수 있습니다.
<ul>
<li class="header">Header item</li>
<!-- ko foreach: myItems -->
<li>Item <span data-bind="text: $data"></span></li>
<!-- /ko -->
</ul>
AngularJS는 이러한 유형의 구문을 제공하지 않는 것이 오히려 불행하다고 생각합니다.
Angular ng-repeat-start
와ng-repeat-end
ng-repeat
문제 를 해결하는 AngularJS 방식에서 내가 접한 샘플은 그의 (유용한) 답변에 게시 된 jmagnusson 유형입니다.
<li ng-repeat-start="page in [1,2,3,4,5]"><a href="#">{{page}}</a></li>
<li ng-repeat-end></li>
이 구문을 본 나의 원래 생각은 : 정말? Angular가 내가 아무 관련이없는 추가 마크 업을 강제하는 이유는 무엇이며 Knockout에서 훨씬 더 쉽습니다. 그러나 jmagnusson의 답변에서 hitautodestruct의 의견이 궁금해지기 시작했습니다. 별도의 태그에서 ng-repeat-start 및 ng-repeat-end로 생성되는 것은 무엇입니까?
사용하는 더 깨끗한 방법 ng-repeat-start
과ng-repeat-end
hitautodestruct의 주장을 조사한 결과 ng-repeat-end
, 별도의 태그에 추가 하는 것은 완전히 쓸모없는 요소를 생성하기 때문에 대부분의 경우에 수행하고 싶지 않은<li>
것입니다. 이 경우 에는 아무것도없는 항목입니다. Bootstrap 3의 페이지가 매겨진 목록은 불필요한 항목을 생성하지 않은 것처럼 보이도록 목록 항목의 스타일을 지정하지만 생성 된 html을 검사하면 해당 항목이 있습니다.
다행히 : 당신은 청소기 솔루션 및 HTML의 짧은 양을 가지고 많은 작업을 수행 할 필요가 없습니다 그냥 넣어 ng-repeat-end
이 같은 HTML 태그에 선언ng-repeat-start
.
<ul class="pagination">
<li>
<a href="#">«</a>
</li>
<li ng-repeat-start="page in [1,2,3,4,5]" ng-repeat-end><a href="#"></a></li>
<li>
<a href="#">»</a>
</li>
</ul>
이는 3 가지 이점을 제공합니다.
- 작성할 HTML 태그 감소
- 쓸모없고 빈 태그는 Angular에 의해 생성되지 않습니다.
- 반복 할 배열이 비어 있으면 태그가
ng-repeat
생성되지 않으므로 Knockout의 컨테이너없는 바인딩이 이와 관련하여 제공하는 것과 동일한 이점을 제공합니다.
그러나 여전히 깨끗한 방법이 있습니다.
더는 각도,이 문제에 대한 GitHub의에서 의견을 검토 한 후 https://github.com/angular/angular.js/issues/1891 ,
당신은 사용할 필요가 없습니다 ng-repeat-start
과 ng-repeat-end
같은 이점을 얻을 수 있습니다. 대신 jmagnusson의 예를 다시 포크하면 다음과 같이 할 수 있습니다.
<ul class="pagination">
<li>
<a href="#">«</a>
</li>
<li ng-repeat="page in [1,2,3,4,5,6]"><a href="#">{{page}}</a></li>
<li>
<a href="#">»</a>
</li>
</ul>
그래서 때 사용 ng-repeat-start
하고 ng-repeat-end
? 당으로 각 문서 에
... 하나의 부모 요소 대신 일련의 요소를 반복합니다 ...
충분히 이야기하고 몇 가지 예를 보여주세요!
그럴 수 있지; 이 jsbin ng-repeat-end
은 동일한 태그에서 사용할 때와 사용하지 않을 때 발생하는 일에 대한 다섯 가지 예를 안내합니다 .