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