使用 Dojo lang.hitch 将参数传递给被调用函数

Passing a parameter into called function using Dojo lang.hitch

我在 ESRI 的 Web AppBuilder 环境中使用 dojo(它使用 ESRI Javascript 3.x API)。

无论如何,我创建了一个按钮,在按钮的 onClick 方法中,我希望能够使用 lang.hitch 调用另一个函数(以将函数保留在范围内)。但是被调用的函数是带参数的,我好像传不进去,只能调用函数,像这样。

this.myDialogBtn1 = new Button({ label: "Create New Location", disabled: false, onClick: lang.hitch(this, this._createNewLocation) }).placeAt(this.createNewLoc)

当然,我的 _createNewLocation 函数需要带一个参数,就像这样。

_createNewLocation(param){...do stuff}

我不确定如何将该参数传递给 onClick 方法。仅仅添加这样的参数是行不通的。它抛出类型错误。有什么想法吗?

lang.hitch(this, this._createNewLocation(param))

只需绑定参数

onClick: lang.hitch(this, this._createNewLocation.bind(this,param));

这会将参数作为第一个参数传递给函数,this 也是您绑定函数的上下文

正如在下面的评论中指出的那样,hitch 是 bind 的 dojos 实现,然后也应该采用参数,但如果是这种情况,您甚至不需要使用 hitch,只需调用

onClick: this._createNewLocation.bind(this,param);

如果您使用 lang.hitch,则无需使用 bind。只需将参数作为第三个参数传递即可。 前两个参数之后提供的任何参数都将传递给函数。

onClick: lang.hitch(this, this._createNewLocation, param);

如果您愿意,可以使用普通 bind() 方法:

onClick: _createNewLocation.bind(this, param);

myObject.prototype._createNewLocation = function(param, evt) {
    console.log(param, evt);
}