0

Primefaces フォーラムで、インスタンスが複製されたり、その他の奇妙な動作が発生したりするため、ダイアログを直接更新したり、周囲の要素を更新したりすることは避けるべきであると読みました。しかし、いくつかの特殊なケースがあり、多くのダイアログを含む要素を更新する必要があります。

重複したインスタンスを取得せずに同じ方法でこれを行う方法は本当にありませんか? 複製されたインスタンスはどのようになりますか? が true に設定されている場合にのみ発生する可能性がありappendToBodyます。これは、単に更新されるのではなく、更新されて本体にもう一度シフトされるためですか?

4

3 に答える 3

1

解決策は、dialog.js を修正することです。 Primefaces フォーラムを参照してください。

Primefaces 3.4.1 の場合:

PrimeFaces.widget.Dialog.prototype._show = function() {
    if(this.cfg.showEffect) {
        var _self = this;

        this.jq.show(this.cfg.showEffect, null, 'normal', function() {
        _self.postShow();
    });
}
else {
    //display dialog
    /*Begin Custom Code*/
    var dlg = jQuery(this.jqId);

    if(dlg.size() > 1){
        dlg.last().remove();
    }
    this.jq = dlg;
    /*End Custom Code*/
    this.jq.show();

    this.postShow();
}

this.focusFirstInput();
this.visible = true;
this.moveToTop();

if(this.cfg.modal)
this.enableModality();
}
于 2012-11-14T15:43:01.707 に答える
0

ダイアログは v3.0 で再実装されました。今のところ問題ないと思います。

于 2012-10-20T17:47:51.343 に答える
0

Primefaces 3.5 の場合

PrimeFaces.widget.Dialog.prototype._show = function() {
    this.jq.removeClass("ui-overlay-hidden").addClass("ui-overlay-visible").css({display:"none",visibility:"visible"});

    if(this.cfg.showEffect){
        var a=this;
        this.jq.show(this.cfg.showEffect,null,"normal",function(){
            a.postShow();
        });
    }
    else {
        //display dialog
        /*Begin Custom Code*/
        var dlg = jQuery(this.jqId);

        if(dlg.size() > 1){
            dlg.first().remove();
        }
        this.jq = dlg;
        /*End Custom Code*/
        this.jq.show();
        this.postShow();
    }
    this.moveToTop();
    if(this.cfg.modal){
        this.enableModality();
    }
}
于 2014-01-07T13:40:35.500 に答える