dijit中animateProperty的范围问题

时间:2012-12-18 22:16:24

标签: javascript scope dojo

在自定义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作为参数传递,但我正在使用style和其他一些东西来获取TypeErrors。

我是否必须使用hitch或其他范围修改方法?或者有一种更简单的方法可以正确地准备这件事{。}}。

1 个答案:

答案 0 :(得分:1)

您肯定需要将onEnd处理程序与this的当前值联系起来,否则当您尝试调用updateCurrentScreen时会出现上下文问题

相关问题