无法获得对象的属性(TS)

时间:2018-04-23 13:43:14

标签: javascript jquery typescript

我有ts代码

这是

    export function load_form_actions() {
    $('#step_2_form').on('ajax:before', function(data) {
      $('#step_2_submit_btn').hide();
      $('#step_2_form .yd-button-pop').hide();
      $('#step_2_spinner').show();

      if ($('input[class=error]')) {
        return Array.from($('input[class=error]')).map((input) =>
          (input.className = ''));
      }
    });

    return $('#step_2_form').on('ajax:success', function(e, data, status, xhr) {


      if (data.errors) {
        for (let error_obj of Array.from(data.errors)) {
          if ($(`#${error_obj[0]}`).length) {
            $(`#${error_obj[0]}`).tooltipster({ contentAsHTML: true, theme: 'tooltipster-red', trigger: 'custom', content: error_obj[1].join('<br /><br />') });
            $(`#${error_obj[0]}`).tooltipster('open');
          }
        }
        setTimeout(() => {
              // @ts-ignore
              $.tooltipster.instances().forEach(element => {
                element.destroy()
              });
            }, 3000);
        $('#step_2_submit_btn').show();
        $('#step_2_form .yd-button-pop').show();
        return $('#step_2_spinner').hide();
      } 
      else {
        const search_id = document.location.href.split('/')[5];
        console.dir(data);
        if ((data.result === 'ok') && (data.only_save === true)) {
          let i = 0;
          let passenger = data.passengers;
          console.log(passenger);
          for (i = 0; i<= passenger.length -1; i++) {
            i += 1;
            //$(`#pax_${i}_firstname`).html(passenger[i].firstname);
            //$(`#pax_${i}_lastname`).html(passenger[i].lastname);
            $(`#pax_${i}`).show();
          }
          return $.fancybox.open($('#step_2_check_names'), {
            modal : true,
            afterClose() {
              $('#step_2_submit_btn').show();
              $('#step_2_form .yd-button-pop').show();
              return $('#step_2_spinner').hide();
            }
          });
        } else if (data.result === 'ok') {
          return Helpers.navigate(data.url);
        } else if (data.result === 'step1') {
          Track.log_event("Show unable to book error screen");
          return $.fancybox.open($('#step_2_unable_to_book_error'), {
            afterClose() {
              return Helpers.navigate(data.url);
            }
          });
        } else if (data.result === 'rescheduled') {
          localStorage.setItem('rescheduled_flight', '1');
          return window.location.reload();
        } else {
          Track.log_event("Show ajax error screen");
          //Honeybadger.notify(raiseError('Ajax not OK on step_2', 'NOT OK'));
          return $.fancybox.open($('#step_2_ajax_error'), {
            afterClose() {
              return Helpers.navigate(data.url);
            }
          });
        }
      }
  });
};

我需要获取data.passengers

的名字和姓氏属性

所以我试着这样做

  

// $(#pax_${i}_firstname)HTML(乘客[I] .firstname)。               // $(#pax_${i}_lastname)HTML(乘客[I] .lastname);

但我收到错误

  

无法获取未定义的名字。

这是数据对象

enter image description here

这是console.log(passenger)数据

enter image description here

我无法理解,为什么我有这个错误?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我发现问题出在哪里。 我使用它,编号和数组,这不好。

使用此代码,一切都将正常运作

 if ((data.result === 'ok') && (data.only_save === true)) {
      let number = 0;
      let passenger = data.passengers;
      console.log(passenger);
      for (let i = 0; i<= passenger.length -1; i++) {
        number += 1;
        $(`#pax_${number}_firstname`).html(passenger[i].firstname);
        $(`#pax_${number}_lastname`).html(passenger[i].lastname);
        $(`#pax_${number}`).show();
      }