从函数内创建时 DOJO 中的变量范围

Scope of variable in DOJO when created from within function

在 DOJO 小部件中,postCreate 和 destroy 方法中的代码用于 create/start 并停止计时器,如下所示。根据下拉框中的值启动或停止计时器。到目前为止效果很好。

postCreate: function() {

    var deferred = this.own(<...some action...>)[0];
    deferred.then(
        lang.hitch(this, function(result) {

            this.t = new dojox.timing.Timer(result.autoRefreshInterval * 1000);
            this.t.onTick = lang.hitch(this, function() {
                console.info("get new data");
            });
            this.t.onStart = function() {
                console.info("starting timer");
            };
            this.t.onStop = function() {
                console.info("timer stopped");
            };

        })
    );

    this.selectAutoRefresh.on("change", lang.hitch(this, function(value) {
        if (value == "Automatic") {
            this.t.start();
        } else {
            this.t.stop();
        }
    }));
},

离开页面时,计时器仍然处于活动状态,所以我想在离开页面时使用 DOJO 的 destroy() 方法停止它。

destroy: function() {
    this.t.stop();
},

然而,这会引发 this.t.stop is not a function 异常。虽然我使用 lang.hitch(this...

,但似乎 this.t 不是在小部件的上下文中创建的

我在这里错过了什么?

我通过将变量 t 重命名为 refreshTimer 解决了这个问题。也许 t 是 Dojo 中的某种保留变量?