Angular: «TypeError: Невозможно прочитать свойство« insertBefore »со значением NULL» при использовании скользящего слайдера

0

Я использую Slick Slider (https://github.com/kenwheeler/slick), чтобы показать горизонтальный слайдер внизу моей веб-страницы:

    <div class="container" ng-if="schedule.length>0">
      <div class="row">
        <slick dots="true" init-onload="true" data="schedule" center-mode="false" infinite="false" speed="300" slides-to-show="4" touch-move="true" slides-to-scroll="1" class="slider one-time">
          <div ng-repeat="x in schedule">
            <div class="status-x-current">
              <a class="x-button" ng-if="x.title == ''" data-ng-click="showRes(workplace, x)">Click here to to do something</a>
              <h3 ng-if="x.title != ''" id = "x_title1" class="x-slider-title">Titel: {{x.title}}</h3>
              <h3 ng-if="x.title != ''" id = "x_time1" class="x-slider-time">{{x.date}}</h3>
          </div>
          </div>
        </slick>
    </div>
  </div>

Это хорошо работает в начале, когда страница загружается (повторно), но "расписание" источника данных обновляется с сервера каждую минуту и после обновления "расписания" я получаю следующую ошибку, и кнопка не работает:

TypeError: Cannot read property 'insertBefore' of null
    at angular.js?body=1:3851
    at forEach (angular.js?body=1:304)
    at Object.$AnimateProvider.$get.enter (angular.js?body=1:3850)
    at angular.js?body=1:18726
    at publicLinkFn (angular.js?body=1:5421)
    at ngRepeatAction (angular.js?body=1:18724)
    at Object.$watchCollectionAction [as fn] (angular.js?body=1:11300)
    at Scope.$get.Scope.$digest (angular.js?body=1:11396)
    at Scope.$get.Scope.$apply (angular.js?body=1:11635)
    at done (angular.js?body=1:7636)(anonymous function) @ angular.js?body=1:9038$get @ angular.js?body=1:6649$get.Scope.$digest @ angular.js?body=1:11408$get.Scope.$apply @ angular.js?body=1:11635done @ angular.js?body=1:7636completeRequest @ angular.js?body=1:7802xhr.onreadystatechange @ angular.js?body=1:7758

Если я удалю "гладкую" липкость из html-кода, проблем больше не будет, поэтому у меня есть что-то делать с Slick, но я не уверен, что такое точная проблема и как ее решить.

  • 1
    Можете ли вы предоставить мне часть этого кода 3851? Вероятно, я могу проследить эту проблему по источнику. По крайней мере, для ответа на вопрос нам не хватает кода вашего контроллера. Вероятно, интересным является ваш метод обновления или ответ сервера с некоторым недопустимым значением (например, нулевым).
  • 0
    Это часть кода в строке 3851: forEach (element, function (node) {parentNode.insertBefore (node, afterNextSibling);}); но это угловой код, не мой. Я проверил ответ от сервера, и это всегда один и тот же файл JSON, никаких различий. Я не думаю, что это вызвано тем, что сервер возвращает недопустимое значение, потому что он работает нормально, когда я не использую скользкий слайдер.
Показать ещё 4 комментария
Теги:
foreach

1 ответ

1

Я шутил о float. Добавьте ng-if='ctrl.isDataLoaded' в ваш блок, поэтому он будет запущен только после того, как ваш controller получит правильные данные. Это должно решить вашу проблему с отсутствием данных на самом деле, пока это не будет полезно.

  • 0
    Я не уверен, что понимаю. К какому блоку вы обращаетесь и как узнать, когда данные полностью загружены? Расписание получает его значение при первой загрузке веб-страницы и обновляется после этого через фиксированный интервал, поэтому оно всегда полностью загружается после первой загрузки страницы. Я попытался установить логическое значение false перед извлечением данных с сервера и установить его в значение true после получения данных и использовать логическое значение в ng-if, но это не сработало.
  • 0
    Также кажется, что ошибка всегда возникает после того, как расписание загружается ровно 3 раза. Таким образом, первый график три раза получает новые данные, назначенные с сервера, ошибка не возникает. Через 3 раза я получаю ошибку. И я проверил, если значение расписания в порядке или нет, после того, как он перезагрузил 3 раза, и кажется, хорошо.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню