2014-11-05 100 views
0

我在Sencha Architect中创建了一个控制器,然后创建了一个函数,但是当我运行该程序时,它说“TypeError:this.epoSetValues不是函数”。我怎样才能调用这个函数?在Sencha Architect中,我怎样才能调用自定义函数?

Ext.define('MyApp.controller.MyController', { 
extend: 'Ext.app.Controller', 

config: { 
    refs: { 
     epoTabPanel: '#epoTabPanel' 
    }, 

    control: { 
     "#epoTabPanel": { 
      initialize: 'onEpoTabPanelInitialize' 
     } 
    } 
}, 

onEpoTabPanelInitialize: function(component, eOpts) { 
    Ext.data.JsonP.request({ 
       url: 'http://192.45.1.178/str/20141027085543295a746e70bab8f1c08cbec9462f2a02256', 
       timeout: 30000, 
       callbackKey: '', 
       callback: function() { 
       }, 
       success: function(result) { 
        this.epoSetValues(result.po_id); 
       }, 
       failure: function() { 
       } 
      }); 

}, 

epoSetValues: function(po_id) { 
      Ext.getCmp('po_id').setTitle(po_id); 
} 

});

回答

0

原因是this范围在Ext.data.JsonP.request内部不同。它的范围是Ext.data.JsonP。这样做:

var me=this; 
Ext.data.JsonP.request({ 
      url: 'http://192.45.1.178/str/20141027085543295a746e70bab8f1c08cbec9462f2a02256', 
      timeout: 30000, 
      callbackKey: '', 
      callback: function() { 
      }, 
      success: function(result) { 
       me.epoSetValues(result.po_id); 
      }, 
      failure: function() { 
      } 
     });