Как определить переменную, доступную из всех методов класса?
Я новичок в JavaScript и, вероятно, пытаюсь подражать Руби с этим. Я использую StimulusJS, но я думаю, что вопрос применим к JS в целом.
Моя цель - запустить метод (по нажатию кнопки), который извлекает и отображает все подкатегории категории с помощью кнопки. Метод / функция сначала извлекают данные, а затем манипулируют DOM. Я хотел разделить их на два метода, но когда я вызываю другой метод (displaySubcategories
) из первого (getSubcategories
) значение event
изменения. То же самое с this
в fetch
блок - мне нужно сначала назначить его self
чтобы потом иметь возможность относиться к самому объекту.
Есть лучший способ сделать это? Как переменные, доступные для всех методов (переменные экземпляра в Ruby)? Или я не должен разделять их на две функции вообще (не JS способ)?
import {Controller} from "stimulus"
export default class extends Controller {
static targets = ["categoryId", "categoryLabel", "subcategoryList", "subcategoryHeader"]
getSubcategories() {
let category_id = event.target.firstElementChild.value
let url = "/api/categories/" + category_id + "/subcategories?levels=1"
let self = this
let e = event
fetch(url)
.then(response => response.json())
.then(json_response => {
self.displaySubcategories(json_response, e)
})
}
displaySubcategories(json_response, event) {
subcategories.forEach(function (subcategory) {
let category_label_copy = this.cloneLabel(current_label, subcategory)
current_label.classList.add("chosen")
subcategory_list.appendChild(category_label_copy)
}, this)
}
}
расходы #getSubcategories">