Как добавить поддержку Internet Explorer 10 в простой компонент VueJs? - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть простой компонент VueJ, который я создаю, который вообще не отображается в IE 10.

Справочная информация. Компонент vue представляет собой список событий компании, который поддерживает базовую фильтрацию исортировка.К сожалению, я должен поддерживать IE10.Я не использую babel, но пытался использовать его для устранения этой проблемы - не дал эффекта

Я получаю ошибку 'city' is undefined.IE10 - единственный браузер, сталкивающийся с этой проблемой.

Вот кодовая ручка только соответствующего кода.Я добавил комментарии, чтобы уточнить, что происходит.https://codepen.io/thewebtech/pen/zJbeVy

Вот только JS (полный код и лучший контекст см. В codepen):

/* Server rendered data */

var events = [{
        path: "events/residuals-biosolids",
        name: "Residuals & Biosolids Conference",
        sortDate: "1536165900000",
        startDate: "4 September 2018",
        endDate: "5 October 2018",
        displayDate: "September 4 - October 5, 2018",
        state: "WI",
        city: "Milwaukee",
        booth: "342",
        featuredImg: "https://cdn2.hubspot.net/hubfs/4299619/event%20thumb.png"
      }, {
        path: "events/bio-expo",
        name: "Biosolid Expo",
        sortDate: "1548979200000",
        startDate: "6 February 2019",
        endDate: "5 March 2019",
        displayDate: "February 6 - March 5, 2019",
        state: "MN",
        city: "Eagan",
        booth: "12",
        featuredImg: ""
      }, {
        path: "events/world-ag-expo",
        name: "World AG Expo",
        sortDate: "1549670400000",
        startDate: "7 February 2019",
        endDate: "2 February 2019",
        displayDate: "February 7 -  2, 2019",
        state: "CA",
        city: "Tulare",
        booth: "3815",
        featuredImg: ""
      }];
      var eventsDesc = [{
        path: "world-ag-expo",
        name: "World AG Expo",
        sortDate: "1549670400000",
        startDate: "7 February 2019",
        endDate: "2 February 2019",
        displayDate: "February 7 -  2, 2019",
        state: "CA",
        city: "Tulare",
        booth: "3815",
        featuredImg: ""
      }, {
        path: "bio-expo",
        name: "Biosolid Expo",
        sortDate: "1548979200000",
        startDate: "6 February 2019",
        endDate: "5 March 2019",
        displayDate: "February 6 - March 5, 2019",
        state: "MN",
        city: "Eagan",
        booth: "12",
        featuredImg: ""
      }, {
        path: "residuals-biosolids",
        name: "Residuals & Biosolids Conference",
        sortDate: "1536165900000",
        startDate: "4 September 2018",
        endDate: "5 October 2018",
        displayDate: "September 4 - October 5, 2018",
        state: "WI",
        city: "Milwaukee",
        booth: "342",
        featuredImg: "https://cdn2.hubspot.net/hub/4299619/hubfs/event%20thumb.png?width=760&name=event%20thumb.png"
      }];
      var selectedStates = ["CA", "MN", "WI", ];
      var selectedCities = ["Eagan", "Milwaukee", "Tulare", ];

      /*

      Vue code below

      */
      var app = new Vue({
       el: "#sg-events-wrapper",
       data: {
          message: "Hello Vue!",
          dateOrder: "ascending",
          selectedCity:"none",
          selectedState:"none",
    /*the data below is pulled from the script tag in the page.*/
          eventCities:selectedCities,
          eventStates:selectedStates,
          eventList: events,
          eventListDesc:eventsDesc,
       },
       computed: {
          eventsSorted:function(){
            /*chooses which server generated list to use for rendering events*/
             if(this.dateOrder=="ascending"){
                return this.eventList;
             }
             else{
                return this.eventListDesc; 
             }
          },

       },
       methods:{
         /*handles the visual filtering when someone sets city and or state*/
          isInStateAndCity:function(eventsCity,eventsState){
             var citiesMatch;
             var statesMatch;
             if(eventsCity == this.selectedCity || this.selectedCity=="none"){
                citiesMatch = true;
             }else{
                citiesMatch = false;
             }
             if(eventsState == this.selectedState ||this.selectedState=="none"){
                statesMatch = true;
             }else{
                statesMatch = false;
             }
             if(citiesMatch && statesMatch){
                return true;
             }else{
                return false;
             }

          }

       }
    });

Действия по устранению неполадок, которые я пробовал:

  • использовал babel, хотя мой код изначально не был написан таким образом.
  • Я использовал babel-polyfill - похоже, не дал эффекта.
  • Я пытался поместить js, который находится втег script в теле основного файла JS, чтобы увидеть, была ли проблема с загрузкой файла js по какой-то причине перед кодом в html.Не имел никакого эффекта.

Что, я думаю, может вызывать проблему:

  • IE10 не любит присваивать значения свойств объектам, подобным I 'я делаю.Не уверен в этом.Это всего лишь предположение, и я не могу придумать другого способа сделать это.

Снимок экрана: ошибка консоли IE 10 и неудачный рендеринг в codepen, если это помогает.

Если у вас есть какие-либо идеи, но у вас нет способа проверить Я могу проверить любые изменения и отправить запись того, что я вижу, и консоли, если в ней есть ошибки.

Я открыт для того, чтобы кодировать это по-другому, если придется. Я действительно ценю любую помощь, которую кто-то готов оказать. Я не считаю себя ни экспертом по JavaScript, ни экспертом по Vue.Если вы видите, что я делаю что-то, что может вызвать проблемы, не стесняйтесь указывать на это, просто будьте конструктивны."делать это так отстой!"не учит меня ничему, кроме того, что спам-комментарии на YouTube просочились в stackoverflow.

Спасибо!

1 Ответ

0 голосов
/ 25 сентября 2018

Публикация ответа самостоятельно, так как другие, вероятно, тоже столкнутся с этой проблемой, и там не так много информации.

Было две проблемы.Мои массивы selectedCities и selectedStates в конце имели запятую.Новые браузеры не заботятся об этом, но <= IE10 делает.</p>

Кроме того, существует проблема с VueJS.Кто-то обновил Vue JS, чтобы использовать новую строку регулярных выражений, которую IE 10 и ниже не понимают.Исправление заключается в том, чтобы либо использовать старую версию VueJS, либо заменить регулярное выражение.Инструкции в источнике, где я нашел эту информацию:

https://github.com/vuejs/vue/issues/7946#issuecomment-393713941

Спасибо всем, кто предложил помощь.

Особая благодарность Питу Эмерсону и Кевину Леонарду (которыйпомог мне через HubSpot Dev Slack и нашел проблемы с рутом)!

...