首页 > 解决方案 > 如何从 $(document) 中调用函数或变量?

问题描述

我尝试使用this.calculatePrice但不工作,无法minTraveller从内部访问外部变量

numberSpin(min: number, max: number) {
    $(document).on('click', '.number-spinner button', function () {
        const btn = $(this);
        // let oldValue = 0;
        let newValue = 0;
        const oldValue = Number(btn.closest('.number-spinner').find('input').val());
        if (btn.attr('data-dir') == 'up') {
            if (oldValue < max) {
                newValue = oldValue + 1;
            } else {
                newValue = max;
            }
        } else {
            if (oldValue > min) {
                newValue = oldValue - 1;
            } else {
                newValue = min;
            }
        }
        btn.closest('.number-spinner').find('input').val(newValue);
        sessionStorage.setItem('totalAdult', String(newValue));
        calculatePrice();
    });
    // console.log(this.minTraveler);
}

calculatePrice() {
    console.log(sessionStorage.getItem('totalAdult'));
}

我该如何解决?

标签: angulartypescript

解决方案


你可以这样做,它和我一起工作。

numberSpin(min: number, max: number) {
    $(document).on('click', '.number-spinner button', () => this.handleClick());
}

handleClick() {
    const btn = $(this);
    // let oldValue = 0;
    let newValue = 0;
    const oldValue = Number(btn.closest('.number-spinner').find('input').val());
    if (btn.attr('data-dir') == 'up') {
        if (oldValue < max) {
            newValue = oldValue + 1;
        } else {
            newValue = max;
        }
    } else {
        if (oldValue > min) {
            newValue = oldValue - 1;
        } else {
            newValue = min;
        }
    }
    btn.closest('.number-spinner').find('input').val(newValue);
    sessionStorage.setItem('totalAdult', String(newValue));
    this.calculatePrice();
}

calculatePrice() {
    console.log(sessionStorage.getItem('totalAdult'));
}

推荐阅读