2016-06-15 14 views
0

JSF 2.2でPrimefaces 5.2を使用しています。 Primefaceの新しいバージョン5.3(または6.0)にアップグレードするまで、primefacesカルーセルnext()およびprev()ナビゲーションメソッドを使用することに問題はありませんでした。この問題の解決方法はありますか?Primefaceカルーセルnext()とprev()メソッドがバージョン5.3と6.0で動作しない

+0

カルーセルナビゲーション方法は何ですか?それをどうやって使いますか?そして、「うまくいきません」とは十分に詳細ではありません。もっと調査し、ブラウザの開発者ツールなどを使用してください。 – Kukeltje

+0

次回は[ask]とhttp://www.stackoverflow.com/tags/jsf/infoと[mcve]を読んで、うまくいかないことを示してください。そして、「うまくいきません」と指定することができます。 "PF( 'myWidgetVar')。next();を使用しているときに '' funtionエラーではありません。 – Kukeltje

答えて

2

この問題もありました。私が見つけた解決策は、setPageを使うことでした。たとえば :

function CarouselNext() 
     { 
     var currentPage = PF('wcarouselDistro').page; 
     var totalPages = PF('wcarouselDistro').totalPages - 1; 
     var c = (currentPage === (totalPages)); 
     if (!c) 
     { 
      PF('wcarouselDistro').setPage(currentPage + 1); 
     } 
     } 

    function CarouselPrev() 
     { 
     var currentPage = PF('wcarouselDistro').page; 
     if (currentPage !== 0) 
     { 
      PF('wcarouselDistro').setPage(currentPage - 1) 
     } 
     } 

私のコンポーネント。

<p:graphicImage id="s1" library="images" name="prev-icon.png" 
          style="display: inline-block; cursor: pointer;" onclick="CarouselPrev();" /> 

<p:graphicImage id="s7" library="images/ulcs" name="next-icon.png" style="display: inline-block; cursor: pointer;" onclick="CarouselNext();" /> 

私は助けてくれることを望みます!

+0

これはなぜ必要なのですか? PF( 'wcarouselDistro')。next()とPF( 'wcarouselDistro')。prev()は実際にはPrimeFaces 5.3 6.0では動作しませんか?もしそうなら、それを修正するために問題を提出してください...ありません:https://github.com/primefaces/primefaces/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+carousel – Kukeltje

+0

あなたの答えをありがとう。これは私を助け、十分になります。 – Kadir

+0

@Kukeltje 私のテストでは、 "next();"を使用できませんでした。私はPrimefaces 6を使用しています。 –

0

これはバグではありません。 PF 5.3(http://blog.primefaces.org/?p=3569)でカルーセルを再設計し、メソッドを修正したり削除したりしました。

PF 5.2タグ(https://github.com/primefaces/primefaces/blob/5_2/src/main/resources/META-INF/resources/primefaces/carousel/carousel.js)のカルーセルソースコードを行205でチェックすると、next()メソッドとprev()メソッドがあります。

しかしnext()メソッドとprev()メソッドはソースコードから削除されました。 PF 6.0のソースコード:github.com/primefaces/primefaces/blob/master/src/main/resources/META-INF/resources/primefaces/carousel/carousel.jsで確認できます。

あなたはPhelipe Galiottiの答えのようにsetPage()を使うことができます。

PF6.0のstartAutoplay()メソッドのコードを使用して、円形カルーセルの次のメソッドとそれ以前のメソッドを実装します。

function prevImage (PFCarousel) { 
 
    if(PFCarousel.page === 0) 
 
\t PFCarousel.setPage(PFCarousel.totalPages - 1); 
 
    else 
 
    PFCarousel.setPage(PFCarousel.page - 1); 
 
} 
 
\t \t 
 
function nextImage (PFCarousel) { 
 
    if(PFCarousel.page === (PFCarousel.totalPages - 1)) 
 
    PFCarousel.setPage(0); 
 
    else 
 
    PFCarousel.setPage(PFCarousel.page + 1); 
 
}

関連する問題