是否可以通过编程将某种行为绑定到dijit?

即假设我在整个项目中都经常使用此dijit / form / NumberSpinner。现在,我想在所有NumberSpinners上使用onFocus: function() { console.log('hi') }

通常我会这样做:

          … new NumberSpinner({
                onFocus: function() { console.log('hi'); },
                …
            });


在每个元素上。是否没有办法将此绑定为每个NumberSpinner实例的默认行为?

谢谢

最佳答案

我终于找到了解决方法。

使用扩展

像这样:

lang.extend(NumberSpinner, {
    _onFocus: function() { console.log('hi'); }
});


JSBIN上的工作示例:https://jsbin.com/sesotolove/2/edit?html,output

参考:https://dojotoolkit.org/reference-guide/1.7/dojo/extend.html

使用原型

可以通过如下重写原型来实现相同的目的:

NumberSpinner.prototype._onFocus: function() { console.log('hi'); }

09-25 17:42