1

ExtJs のコントローラー クラスの私のコードは次のようになります。

  1. thisアプリの複数のインスタンスを使用するため、グローバル変数を使用せずにオブジェクトを他の関数に渡すにはどうすればよいですか。

  2. グローバルにしか実行できない場合、グローバル変数を (1 つのインスタンスに対してのみ) 分離するにはどうすればよいですか?

ExtJs 4.1 と DeftJs を使用しています

ありがとう!

#

編集:

あらゆるところoMeasurementsに置き換えたい!this

init: function() {
    oMeasurements = this;
    this.readConfig();
},
readConfig: function() {

         oMeasurements.httpApi.request({
               module : 'monitor',
               func  :  'getConfig',
               success: oMeasurements.readConfigCallback
         });
      },

readConfigCallback: function(oResponse) {
taskMeasurements =  {
            run: oMeasurements.output,
            interval: '1000'
            ,scope: this
         }
Ext.TaskManager.start(taskMeasurements); 
},

output: function() {
         // finally here, "this" is no more my original "this"
         console.log(this);

         oMeasurements.httpApi.request({
               module : 'monitor',
               func   : 'getMeasurementsFiles',
               success: oMeasurements.outputCallback
         });
      }
4

2 に答える 2

3

scope: thisコールバック定義の後に追加する必要があります。スコープを失っているのは、別の関数から関数を呼び出しているからではなく、コールバックを使用しているからです。

于 2012-06-01T14:54:42.337 に答える
0

Usually there is a scope parameter in Ext function calls with callbacks.

You can also set "this" of a function using Ext.bind();

For example, if you passed a function a() to a another method and ran it, "this" would be the callee. If you called Ext.bind(a, this), when passing "a", "this" would refer to the caller.

于 2012-06-01T21:15:16.853 に答える