是否有可能在滑动时检测到事件"在primefaces滑块?
我有一个民意调查(每3秒更新一次滑块)来更新滑块'值(因为多个客户端可以使用幻灯片)。
当我滑动并进行定期ajax调用时(<p:poll>
),滑块返回其初始位置。这种行为是可以理解的,因为表单本身是刷新的。
我需要避免这种情况:当我滑动时,我希望轮询停止。当我停止滑动ajax事件&#34; slideEnd&#34;叫做。在这种情况下,我会正常返回轮询刷新过程。
这可能吗?我需要什么?
编辑:我发现了<p:slider>
的onSlide和onSlideStart属性。我使用了类似的东西:
<p:slider for="porta2005" minValue="0.0" maxValue="100.0" step="1" styleClass="width-100" onSlide="#{dimmerBean.slideStart()}">
<p:ajax event="slideEnd" listener="#{dimmerBean.mudaTensao2005}" update="tensao2005"/>
</p:slider>
但是在bean内的每个轮询请求中调用方法slideStart()
,不仅在我有效滑动时。像这样在onSlide中调用bean方法是错误的吗?
我正在使用Primefaces 6.1。
答案 0 :(得分:3)
onSlide
,onSlideStart
和onSlideEnd
是客户端回调。因此,如果将一个支持bean方法放在这些属性中,它将在渲染期间调用,而不是在实际事件期间调用。
来自文档:
名称默认类型说明
onSlide null在滑动期间执行的字符串客户端回调。
略低于此:
客户端回调
Slider提供三个回调来挂钩你的自定义javascript,onSlideStart,onSlide和 onSlideEnd。所有这些回调都接收两个参数; slide事件和包含的ui对象 有关该事件的信息。
您可以使用轮询窗口小部件功能停止轮询。假设您的p:poll
widgetVar
属性为myPoll
,您可以在滑动过程中将其暂停,如图所示。
<p:slider for="porta2005" minValue="0.0" maxValue="100.0" step="1" styleClass="width-100"
onSlideStart="PF('myPoll').stop()" onSlideEnd="PF('myPoll').start()">