1

我在 ExtJs 的 Controller 类中的代码如下所示。

  1. 如何在this不使用全局变量的情况下将对象传递给其他函数,因为我将使用我的应用程序的多个实例。

  2. 如果只能在全局范围内完成,我如何隔离我的全局变量(仅针对一个实例)?

我使用 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

通常在带有回调的 Ext 函数调用中有一个作用域参数。

您还可以使用 Ext.bind() 设置函数的“this”;

例如,如果您将函数 a() 传递给另一个方法并运行它,“this”将是被调用者。如果你调用了 Ext.bind(a, this),当传递“a”时,“this”将指向调用者。

于 2012-06-01T21:15:16.853 回答