Потеря значения переменной, назначенного в обратном вызове iCheck в Angular - PullRequest
0 голосов
/ 29 июня 2018

Я новичок в этом, поэтому будьте добры.

У меня есть эти 2 функции в одном компоненте. Ts

Первый:

addCost() {
    $(document).ready(function(){
                    (<any>$('input')).iCheck({
                        checkboxClass: 'icheckbox_square-blue',
                        radioClass: 'iradio_minimal-grey'
                    });
                    $('#not2bpaid').on('ifChecked', () => {
                        this.not2bpaid_tosend = "N";
                    });
}

Это назначение переменных в обратном вызове ifChecked работает, я в этом убедился.

А потом у меня есть другая функция, которая вызывается по событию click в html, которая использует переменную not2bpaid_tosend.

addCost () вызывается ДО функции при событии щелчка, но к тому времени not2bpaid_tosend утратил свое значение.

Я также попытался передать not2bpaid_tosend в качестве параметра во 2-ю функцию после ее запуска из html. Тот же результат. К тому времени переменная пуста. И я не касаюсь этой переменной в любое другое время между этими двумя функциями.

Не уверен, что здесь происходит или как это решить. Наверное, что-то простое, что я упустил из виду, поскольку, как я уже сказал, я новичок в этом нелепом деле.

Любая помощь будет принята с благодарностью. спасибо

1 Ответ

0 голосов
/ 29 июня 2018

Вы должны использовать функцию стрелки при передаче функции аргумента в функцию ready jquery, чтобы сохранить контекст класса компонента нетронутым.

addCost() {
  $(document).ready(() => {
    (<any>$('input')).iCheck({
      checkboxClass: 'icheckbox_square-blue',
      radioClass: 'iradio_minimal-grey'
    });
    $('#not2bpaid').on('ifChecked', () => {
      this.not2bpaid_tosend = "N";
    });
  });
}
...