Переформулирую, пожалуй. Вот есть код:
token: '111',
run() {
this.addressSuggestionsInit();
},
completeFields($this, suggestionsData) {
let address = suggestionsData.data;
let container = $this.closest('[data-suggestions-container]');
let completeInputs = container.find('[data-equal-field-from]');
completeInputs.each(function() {
let input = $(this);
let name = input.attr('data-equal-field-from');
const value = address[name];
const type = address[name + TYPE];
let fullValue = '';
if ('street' === name || 'city' === name) {
fullValue = type && value ? `${type}. ${value}` : '';
}
if ('region' === name) {
const regionTypeFull = address.region_type_full;
fullValue = regionTypeFull && value ? `${value} ${regionTypeFull}` : '';
}
if (value) {
input.val(fullValue ? fullValue : value);
} else {
input.val('');
}
input.change();
});
$this.change();
},
addressSuggestionsInit(container = false) {
let self = this;
let $address = container ? $(`${container} [data-suggestions-address]`) : $('[data-suggestions-address]');
$address.each(function() {
let $this = $(this);
$this.suggestions({
count: 10,
type: 'ADDRESS',
minChars: 3,
token: self.token,
onSelect(suggestionsData) {
console.log('suggestionsData');
console.log(suggestionsData);
self.completeFields($this, suggestionsData);
},
addon: 'none',
});
});
},
};
доступ мне нужно получить к suggestionsData.
что я сделал:
- поместил коллбэк в месте инициализации этого скрипта, чтобы передать объект наружу.
suggest.run(function(suggestionsData) {
console.log('вызов из коллбэка' + suggestionsData.data);
});
- сам скрипт изменил следующим образом:
run(suggestion) {
this.addressSuggestionsInit();
this.suggestion = suggestion; //добавил коллбэк
},
- поместил коллбэк в то место, где идет работа с suggestionData:
onSelect(suggestionsData) {
console.log('suggestionsData');
console.log(suggestionsData);
this.suggestion(); // по моему замыслу это должен быть вызов коллбэка и передача его с параметром наверх, но тут исполнение скрипта прерывается ошибкой с сообщением о том, что this.suggestion is not a function
self.completeFields($this, suggestionsData);
},
буду признателен, если мне объяснят, что я делаю не так, и как надо получать доступ к свойствам объекта снаружи.