2012-07-22 5 views
0

폴 아일랜드어의 무한 스크롤 플러그인에 약간 문제가 있습니다. 결과가 1 페이지 인 경우 완벽하게 작동하지만 결과가 두 페이지 이상인 경우 마지막 페이지를 반복해서 반복합니다.무한 스크롤 기능 오류가 아닙니다

$('#grid').infinitescroll({ 
navSelector : "#paginationControl:first", 
nextSelector : "#paginationControl a#next:first", 
itemSelector : "#grid .entry", 
debug : true, 
bufferPx : 500 
}, 
function(newElements){ 
//Apply masonry 
var $newElems = $(newElements); 
$newElems.imagesLoaded(function(){ 
    $("#grid").masonry('appended', $newElems); 
}); 
    //See if this is the last page 
if(curPage >= pages){ 
    alert("Infinite scroll is paused."); 
    $('#grid').infinitescroll('pause'); 
} 
}); 

그리고 여기 내 매김 컨트롤입니다 : 여기 내 무한 스크롤 구성입니다

<?php if ($this->pageCount): ?> 
<div class="paginationControl" id="paginationControl"> 
<!-- Previous page link --> 
<?php if (isset($this->previous)): ?> 
    <a href="<?php echo $this->url(array('page' => $this->previous)); ?>" id="previous"> 
     &lt; Previous 
    </a> | 
<?php else: ?> 
    <span class="disabled">&lt; Previous</span> | 
<?php endif; ?> 

<!-- Numbered page links --> 
<div id="numberedPages"> 
<?php foreach ($this->pagesInRange as $page): ?> 
    <?php if ($page != $this->current): ?> 
     <a href="<?php echo $this->url(array('page' => $page)); ?>"> 
     <?php echo $page; ?> 
     </a> | 
    <?php else: ?> 
     <?php echo $page; ?> | 
    <?php endif; ?> 
<?php endforeach; ?> 
</div> 
<!-- Next page link --> 
<?php if (isset($this->next)): ?> 
    <a id="next" href="<?php echo $this->url(array('page' => $this->next)); ?>" > 
    Next &gt; 
    </a> 
<?php else: ?> 
    <span id="next" class="disabled">Next &gt;</span> 
<?php endif; ?> 
</div> 
<?php endif; ?> 

내가 마지막 페이지에서 다음 페이지 선택이 비활성화 된 이후 마지막에 충돌 할 때 멈출 것이라고 생각 페이지. 마지막 페이지를 계속해서로드하는 이유는 무엇입니까? 어떻게하면 멈추게 할 수 있습니까?

편집 : 콜백 함수에 대한 검사가이 질문에 jQuery InfiniteScroll plugin loads the last page over and over에서 영감을 잠시 후 스크롤을 중지하려고 할 경우

내가이 추가되었습니다. 페이지가 사용할 수있는 마지막 페이지로 정의 CURPAGE 현재 페이지입니다

//See if this is the last page 
if(curPage >= pages){ 
    alert("Infinite scroll is paused."); 
    $('#grid').infinitescroll('pause'); 
} 

는 각 호출을 증가. 수표가 한 지점에서 완벽하게 작동하지만 뭔가를 바꿨습니다. 무엇이 있는지, 지금 어떤 이유 때문에 지금 오류가 발생했습니다 $("#grid").infinitescroll is not a function $('#grid').infinitescroll('pause'); 무한 스크롤이 그 시점의 함수가 아니라는 것을 전혀 모릅니다. 분명히 자바 스크립트가 처음부터 그것에 도착해야했습니다. 함수 오류가 아니라 이것을 어떻게 제거 할 수 있습니까?

+0

여기에서 대답을 고려해야합니다 : http://stackoverflow.com/questions/13708722/infinitescroll-is-not-a-function-with-yii – Silentbang

+0

@silentbang 오류는 무엇인가가 $ 별칭을 방해하고 있다는 것입니다. , 내 것이 백엔드가 잘못된 페이지에 404를 던지는 대신 일시 중지 기능을 사용하여 여분의 페이지를로드하는 것을 막으려 고 시도했기 때문입니다. – jaimerump

답변

0

zend의 페이지 매김기에 존재하지 않는 페이지 번호를 지정하면 가장 가까운 유효한 페이지 번호 만 검색됩니다. 유효한 페이지가 20 개가 있고 400 번째를 검색하려고하면 단순히 20 번째를 반환합니다. 나는 백엔드에 404를 던지기위한 코드를 추가했고, 지금은 정각에 멈춘다. 무한 스크롤 스크립트는 백엔드가 오류를 던질 때까지 페이지를 로딩하기 만하면되므로 반복되지 않는다는 것을 모릅니다.

if($page_num > $pager->getPages()->pageCount){ 
     $this->_response->clearBody(); 
     $this->_response->clearHeaders(); 
     $this->_response->setHttpResponseCode(404); 
    } 
내가 만 페이지 URL 방식을 알아 내기 위해 컨트롤을 사용하여 단순히 증가하기 때문에 내 매김 컨트롤에 사용할 다음 페이지 선택은 다음 페이지를 선택에서 무한 스크롤 스크립트를 멈추지 않았다 추측 것

거기서 나온 번호들.