2012-04-11 7 views
0

から関数を呼び出す:ExtJSには、私はこのコードを持っているオブジェクトの宣言

Ext.define('DKM.BaseClasses.Stores.BaseStore', { 
requires:['Ext.window.MessageBox'], 
extend: 'Ext.data.Store', 

proxy: { 
     type:'ajax', 
     listeners: { 
      exception: function(proxy, response, options) {     
       requestMessageProcessor(proxy, response); 
      } 

     }, 
     afterRequest: function(request, success) { 

      requestMessageProcessor(request.scope, request.operation.response); 
     }, 
},  

requestMessageProcessor: function(proxy, response) { 
... 

私がやりたい何がrequestMessageProcessorを呼び出すことです。問題(多分スコープの問題)は、 "requestMessageProcessorは関数ではありません"というエラーを受け取ることです。

誰かからアドバイスをいただけますか?

ありがとうございます! デビッド

+0

正確には、アプリでその関数をどのように呼び出しましたか? –

+0

これは私のすべての店舗の基本クラスでなければなりません。私はすべての私の要求に対して中心的な点を求めています。ストアはサーバーに(.phpファイルに)要求を送信し、次に.json応答を返します。たとえば、単に失敗のメッセージを返します。{success:false}。これは、リスナー(例外)によって傍受され、関数を呼び出す必要があります。 – TouchofDestiny

答えて

0

変更するには、このようなあなたの定義:それを行う必要があります

listeners: { 
    exception: function(proxy, response, options) {     
     this.requestMessageProcessor(proxy, response); 
    }, 
    scope: this 
}, 

+0

あなたの答えをありがとう。残念ながら、私はいつも同じエラーが発生します: "this.requestMessageProcessorは関数ではありません" – TouchofDestiny

+0

requestMessageを呼び出す前に 'console.log(this)'を追加して実際にどのスコープが実行されているかを確認してください – sha

+0

面白いです... :Window dkm(私はMVCアーキテクチャで作業していますが、スコープはウィンドウオブジェクトのビューに基づいているようです...) – TouchofDestiny

0

あなたはいつでも呼び出すことが可能な「グローバル」としてその機能を使用したい場合は、どこでも、私は通常の方法では、へのがMainControllerを言うと、そこに関数を定義してみましょう、メインコントローラを作成することです。

Ext.getStore('your-store-id').yourFunction

:あなたはまだ単純にその店にIDを設定し、これを使用して、あなたの店にその機能を置きたい場合はその後、あなたはそれを呼びたい時はいつでも、ちょうど

Ext.getController('MainController').yourFunction

を使用

希望します。

+0

返事をありがとう。私はidを設定していますが、私が今取得するのはFirebugの "未定義"エラーです:Ext.getStore(エラーの説明はありません – TouchofDestiny

+0

あなたは他のコンポーネントの設定にまだ店舗を含めていない場合、 'Ext.create'で明示的に作成する –

+0

ありがとうございました! – TouchofDestiny

関連する問題