키워드로 장소검색하고 목록으로 표출하기 중 pagination에 대해 질문있습니다

개발배우는 학생인데 학습용 프로젝트 진행 중 막혀서 질문드립니다.
pagination을 통해서 페이지가 생성되고 동작되는 원리에 대해서 질문이 있습니다.

keywordSearch함수를 통해서 pagination이라는 인스턴스가 처음 생성될 때,
그 때 같이 생성된 data에 대한 정보를 이미 가지고 있기 때문에
a태그를 눌렀을 때 해당 페이지로 이동할 수 있는 건가요?

제가 3번의 검색결과를 합친 newData를 새롭게 생성해서 display에 이용하려고 하는데
pagination부분에서 문제가 발생하는 것 같아서요.
paginatino.totalCount는 수정이 가능해서 바꿔봤는데 그래도 제대로 되지는 않네요.
이게 임의로 수정한 값을 쓰면 원래 제대로 동작시키기가 어려운 건가요?

네 임의의 값을 할당하면 정상동작을 보장할 수 없습니다.
pagination객체에 쓰여진 속성들에 값 할당은 가능하지만 그걸 의도하지는 않았습니다.

예상하신대로 pagination 인스턴스는 요청 결과에 대한 정보를 담고 있습니다.
한 예로, pagination.current 값이 현재 페이지가 몇 번째인지를 나타내는 있죠.

http://apis.map.daum.net/web/sample/keywordList
이 예제에서,
페이징을 하나의 콜백 함수에서 구현하고 있는 걸 보시면 어느정도 이해가 되실겁니다.
콜백 함수는 동일한 것을 사용하며 그 콜백으로 들어오는 pagination 객체는 매번 현재 상태 정보를 가지고 있는 새로운 인스턴스가 생성되어 콜백의 인자로 전달됩니다.

답변 감사합니다. 질문이 하나 더 있습니다.
그러면 페이지 a태그를 눌러서 요청을 보낼 때마다 goToPage메소드에서 placesSearchCB가 재호출되는 것인가요?

네 맞습니다.
placesSearchCB 안에서 호출되고 있는 displayPagination이라는 함수 내부를 보면
a태그를 만드는 반복문이 있는데

for (i=1; i<=pagination.last; i++) {
    var el = document.createElement('a');
    el.href = "#";
    el.innerHTML = i;

    if (i===pagination.current) {
        el.className = 'on';
    } else {
        el.onclick = (function(i) {
            return function() {
                pagination.gotoPage(i);
            }
        })(i);
    }

    fragment.appendChild(el);
}
paginationEl.appendChild(fragment);

placesSearchCB가 재호출 될 때마다 pagination객체의 현재 상태에 따라 a 태그들을 만드는 로직이 있으며,
a 태그를 클릭할 때마다 gotoPage() 함수를 호출하는 onclick 이벤트 핸들러를 등록해주고 있습니다.

답변 감사합니다!

1개의 좋아요