1

こんにちは、ボタンが押されたときにフィールドセットをオーバーレイに配置しようとしています。ただし、次のように値を取得しようとすると

"var values = Ext.getCmp('reviewscontainer').getValues();" 

「UncaughtTypeError:Undefinedのメソッド'getValues'を呼び出せません」というエラーが表示されます。これらの値を参照して、オーバーレイ内から取得するにはどうすればよいですか?オーバーレイにない場合は機能します。

Ext.define('FirstApp.view.ReviewsContainer',{
extend:'Ext.NavigationView',
xtype:'reviewscontainer',
config:{

    title:'Reviews',
    iconCls:'compose',
    items:[
        {
            xtype:'reviews'

        },
        {
          xtype: 'button',
                    align: 'right',
                    ui: 'confirm',
                    text:'Leave Review',
            docked: 'bottom',
            centered: 'true',


              handler: function() {
                if (!this.overlay) {
                    this.overlay = Ext.Viewport.add({
                        xtype: 'formpanel',    
                        modal: true,
                        hideOnMaskTap: true,
                        showAnimation: {
                            type: 'popIn',
                            duration: 250,
                            easing: 'ease-out'
                        },
                        hideAnimation: {
                            type: 'popOut',
                            duration: 250,
                            easing: 'ease-out'
                        },
                        centered: true,
                        width: Ext.os.deviceType == 'Phone' ? 260 : 400,
                        height: Ext.os.deviceType == 'Phone' ? 220 : 400,
                        styleHtmlContent: true,

                        items: [
                            {
                                docked: 'top',
                                xtype: 'toolbar',
                                title: 'Overlay Title'
                            },

            {
                xtype:'fieldset',
                title: 'Reviews',
             items: [
                    {
                        xtype:'textfield',
                        name: 'name',
                        label:'Name',
                        placeHolder: 'name'
                    },
                    {
                        xtype:'textfield',
                        name:'business',
                        label:'Place'
                    },
                      {
                        xtype:'textfield',
                        name:'rating',
                        label:'Rating'
                    },
                    {
                        xtype:'textareafield',
                        name:'review',
                        label:'Review'
                    }
                ]
            },
            {
            items:[
                {
                    xtype:'button',
                    text: 'Submit',
                    ui:'confirm',
                    handler: function(){
                      var values = Ext.getCmp('reviewscontainer').getValues();
                      // prints the values filled in the form 
                      // text fields of name, email and message.     
                      console.log(values.name+","+values.place+","+values.rating);                          


                      Ext.Ajax.request({
                        url: 'http://insert.php',
                        params : values,
                        success: function(response){
                            var text = response.responseText;
                             Ext.getCmp('reviewscontainer').reset();
                            Ext.Msg.alert('Success', "Review successfully created.",    this.overlay.hide()); 
                        }
                       });
                    }
                }
            ]
        }
                        ],
                        scrollable: false
                    });
                }

                this.overlay.show();
            }
        }

    ]
}
})
4

1 に答える 1

1

これは、フォームパネルにIDを指定していないためです。

Ext.getCmp('reviewscontainer')

id: reviewscontainernotを含むアイテムを取得するために使用されますxtype:'reviewscontainer'

id: reviewscontainerしたがって、フォームパネルに追加するだけで、機能するはずです。

于 2013-03-24T16:19:17.603 に答える