Передача параметра в вызываемую функцию с помощью Dojo lang.hitch - PullRequest
1 голос
/ 09 октября 2019

Я использую dojo в среде ESRI Web AppBuilder (которая использует API ESRI Javascript 3.x).

В любом случае, я создаю кнопку, и в методе кнопки 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))

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Вам не нужно использовать bind, если вы используете lang.hitch. Просто передайте параметр в качестве третьего аргумента. Любые аргументы, предоставленные после первых двух, будут переданы в функцию.

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

Вы можете использовать вместо этого метод vanilla bind(), если предпочитаете:

onClick: _createNewLocation.bind(this, param);

myObject.prototype._createNewLocation = function(param, evt) {
    console.log(param, evt);
}
1 голос
/ 09 октября 2019

просто связать параметр

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

это передаст параметр в функцию в качестве первого параметра, this - это контекст, в котором вы также связываете функцию

Как указано в комментарии ниже, hitch - это реализация dojos bind, которая также должна принимать параметры, но в этом случае вам даже не нужно использовать hitch, и вы можете просто вызвать

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

...