2016-09-21 5 views
0

Liferayポートレット内にExt.form.panelを作成しました。電子メール、パスワードのテキストボックスと保存ボタンを持つシンプルなフォームです。 liferayポートレットを最小化および復元するとき。 Extjsフォーム要素は2回レンダリングされます。liferayの最小化と復元ポートレットはフォームパネルを2回レンダリングします

克服するためにこの問題についてお手伝いをしてください。

ありがとうございます。以下は

<div id="configPanel"></div> 

    <script type="text/javascript"> 
Ext.onReady(function() { 

var addUserForm = Ext.create('Ext.form.Panel', { 
     renderTo: "configPanel", 
     bodyStyle: 'padding: 5px 5px 0 5px;', 
     defaults: { 
      xtype: 'textfield', 
      anchor: '100%', 
     }, 
     items: [{ 
     xtype: 'textfield', 
     name: 'url', 
     alias:'ac-url', 
     id:'ac-field-url', 
     itemId:'configPortlet_URL', 
     fieldLabel: 'URL', 
     labelSeparator:'', 
     allowBlank: false, 
     vtype: 'url', 
     emptyText:'[Required e.g. http://google.com]', 
      listeners: { 
       //specialkey: submitOnEnter 
      } 
     },{ 
      xtype: 'textfield', 
     name: 'password', 
     alias:'ac-password', 
     id:'ac-field-password', 
     fieldLabel: 'Password', 
     labelSeparator:'', 
     inputType: 'password', 
     allowBlank: false, 
     enforceMaxLength: true, 
     maxLength: 256, 
     emptyText: '[Required]', 
       listeners: { 
        //specialkey: submitOnEnter 
       } 
      }, { 
       xtype: 'button', 
       text: 'Random', 
       tooltip: 'Generate a random password', 
       style: 'margin-left: 4px;', 
       flex: 0, 
       handler: function() { 
        //this.prev().setValue(password(8, false)); 
        //this.prev().focus() 
       } 
      }], 
     buttons: [{ 
      id: 'saveBtn', 
      itemId: 'saveBtn', 
      text: 'Submit', 
      handler: function() { 
       this.up('form').getForm().submit(); 
      } 
     },{ 
      text: 'Cancel', 
      handler: function() { 
       this.up('form').getForm().reset(); 
      } 
     }], 
     submit: function() { 
      var currentForm = this.owner.form; 

      if (currentForm.isValid()) { 
       // var newSomething = Ext.create('Something', currentForm.getFieldValues()); 
      } 
     } 
    }); 
    addUserForm.show(); 
}); 
</script> 

のLiferayポートレット enter image description here

答えて

0

の画像は、ポートレットを開くたびに、Ext.onReadyが再び発射されるかのように思えます。

は、私はあなたが新たにそれを作成する前に、最も簡単な解決策は、フォームの存在を確認することです推測:

Ext.onReady(function() { 
    if(!Ext.getCmp('ac-field-url')) { 
     Ext.create('Ext.form.Panel', { 
      renderTo: "configPanel", 
      ... 
      id:'ac-field-url', 
      ... 
    } 
}); 
関連する問題