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

时间:2015-04-14 06:31:49

标签: javascript dojo

在DOJO小部件中,postCreate和destroy方法中有代码来创建/启动和停止计时器,如下所示。根据下拉框中的值,启动或停止计时器。这到目前为止工作正常。

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异常。虽然我使用this.t

,但似乎未在窗口小部件的上下文中创建lang.hitch(this...

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

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