0

在自定义 dijit 中,我有一个按钮data-dojo-attach-event连接到一个名为_goNext. 我需要对 Dijit 控制器 javascript 文件中声明的节点进行动画处理,但它的范围似乎animateProperty有点捏造。

require([/* deps */], function(/*deps*/){
    return declare(null, {
    postCreate : function(){
        this._animNode = query('.someNode')[0];
    },
    // non-essentials omitted
    _goNext : function(){
        fx.animateProperty({
            node : this._animNode
            properties : { 
                left : { 
                    start : this._start,
                    end : this._end,
                    unit : 'px'
                } 
            },
            onEnd : function(){
                this.updateCurrentScreen();
            }
        }).play();
    }
} 
})

...本质上就是我正在使用的东西。这样一来,它什么也不做,因为它的范围与声明我的节点和值的地方不同。如果我手动输入值(硬编码)并为要抓取的节点参数应用一个 id,它可以正常工作,但这很愚蠢,而不是我想要的。

我尝试将它包装在this作为参数传递的匿名包装器中,但我得到了 TypeErrorsstyle和其他一些东西。

我是否必须使用挂钩或其他范围修改方法的变体?或者有没有更简单的方法来正确准备好这个东西this

4

1 回答 1

1

您肯定需要将onEnd处理程序连接到 的当前值this,否则当您尝试调用时会遇到上下文问题updateCurrentScreen

于 2012-12-19T00:09:54.000 回答