は、ニーズに応じて異なります。
最初のアプローチ:
このような例のためのページが読み込まれた後に手動選択、:
XHTML
<p:galleria widgetVar="galleriaWV">
...
</p:galleria>
JS
<script>
//<![CDATA[
function changeActiveIndex(widgetVar, index, reposition) {
if (widgetVar && index) {
widgetVar.select(index, reposition);
}
}
$(document).ready(function() {
setTimeout(function() {
changeActiveIndex(PF('galleriaWV'), 2, false);
}, 500);
});
//]]>
</script>
このアプローチは、次のような結果になります: は、第三の画像(bat3.jpg、インデックス= 2)を選択し、ユーザーが最初の選択数ミリ秒後に、その後0 activeIndex by default(bat1.jpgを)見ていることがわかりますその結果、setTimeout
の呼び出しがあるため、docuemnt.ready
の呼び出しの理由は、undefined
オブジェクトのようなエラーが発生しないように、setTimout can be inaccurateが呼び出される前にwidgetVar
が初期化されていることを確認することです。
![enter image description here](https://i.stack.imgur.com/JVpvB.gif)
第二のアプローチ:このアプローチは、それが一度だけ呼ばれていますので、初期化時に、_render機能をパッチサルになり
が、これはイメージが何を瞬時に選択されていないことを確認します第1のアプローチの反対に遅れる。
<script>
//<![CDATA[
function changeActiveIndex(index) {
var oldRender = PrimeFaces.widget.Galleria.prototype._render;
PrimeFaces.widget.Galleria.prototype._render = function() {
this.cfg.activeIndex = index;
oldRender.apply(this, []);
}
}
changeActiveIndex(2);// to get the active image from bean, replace 2 with #{beanName.intIndexOfActiveImage} for example
//]]>
</script>
ここで注意することは、このアプローチでは、あなたが同じ最終ページに定義された2つのガレリアを持っている場合、それらはすべて同じアクティブなインデックスで終わる例えば、そのページに含まれるすべてのガレリア・コンポーネントを変更していますそのような場合は、widgetVarの名前が等しいかどうかを確認し、それに応じて実行することができます。
私は、UXの観点から見ると、より自然なように、2番目のアプローチを採用します。
第2のアプローチが私に役立ちます。ありがとう。 また、ギャラリーに画像を追加するAjaxアップロードボタンもあります。ガレリアの更新は、前の選択に残る代わりに、この新たに追加されたイメージにジャンプする必要があります。 – Ralf
@ラルフ良い、あなたはあなたのために動作する場合は、受諾と答えをマークすることがあります。 Ajaxのアップロードボタンに関しては、ajaxコールの不完全な部分に、このようなPF( 'galleriaWV')を呼び出すことができます。 –