How to set start time for primefaces clock widget?

ⅰ亾dé卋堺 提交于 2019-12-07 20:12:44

问题


Is it possible to set start time for PrimeFaces clock widget? I know about Analog Clock from PrimeFaces Extensions, but I need digital clock with this option. I have tried to override javascript method for this clock, but it doesn't work.

  PrimeFaces.widget.Clock = PrimeFaces.widget.BaseWidget.extend({

    init: function(cfg) {
        this._super(cfg);

        this.cfg.value = 1430304817141;
        this.current = this.isClient() ? new Date() : new Date(this.cfg.value);
        var $this = this;

    },

    isClient: function() {
        return this.cfg.mode === 'client';
    },

});

回答1:


The first problem was that you were overriding the widget too late, after PrimeFaces has instantiated its original unmodified widget. According to PrimeFaces Customizable Resource Ordering the right place to override would be in h:head.
The second problem is that you're overriding the widget with a crippled version, that doesn't contain many necessary functions that were present in the original widget.

I wouldn't recommend this approach at all - to basically break the whole PrimeFaces widget like that. What if you'd want to use the normal unchanged clock? Copy-pasted code is harder to maintain too. I advise going the more localized approach: tweak only a single widget instance.

<p:clock id="my_clock" />
<script>
    // get widgetVar via EL function, since p:clock doesn't have the widgetVar attribute
    var myClockVar = #{p:widgetVar('my_clock')};
    myClockVar.current = new Date(1430304817141);
</script>

Just be careful not to update the clock with AJAX requests, or it will to reset to showing client time; and not to update the script, or the clock will reset to the specified time again.



来源:https://stackoverflow.com/questions/29941602/how-to-set-start-time-for-primefaces-clock-widget

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!